Yarn 调度流程
Yarn 调度流程
Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而MapReduce等运算程序则相当于运行于操作系统之上的应用程序。
ResourceManager
官网原文:
The ResourceManager is the ultimate authority that arbitrates resources among all the applications in the system.
The ResourceManager has two main components: Scheduler and ApplicationsManager.
RM组成:
- Application Manager 应用程序管理器
- Resource Scheduler memory+cpu资源调度器
NodeManager
官网原文:
The NodeManager is responsible for launching and managing containers on a node. Containers execute tasks as specified by the AppMaster.
NM组成:
- container - 虚拟概念,执行MR、Spark计算任务的最小单元
MR on YARN 调度流程
MR on YARN 调度过程描述:
- 用户向YARN提交应用程序,其中包括ApplicationMaster程序、启动ApplicationMaster的命令等。
- RM为该job分配第一个container,运行job的ApplicationMaster。
- App Master向Application Manager注册,这样就可以在RM WEB界面查询这个job的运行状态。
- App Master采用轮询的方式通过RPC协议向RM申请和领取资源。
- 一旦App Master拿到资源,就对应的与NM通信,要求启动任务。
- NM为任务设置好运行环境(jar包等),将任务启动命令写在一个脚本里,并通过该脚本启动任务task。
- 各个task通过RPC协议向App Master汇报自己的状态和进度,以此让App Master随时掌握各个task的运行状态,从而在task运行失败后重启任务。
- App Master向Application Manager注销且关闭自己。
总的来说就是两步:
- 启动App Master,申请资源;
- 运行任务,直到任务运行完成。