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 调度流程

MR on YARN 调度过程描述:
  1. 用户向YARN提交应用程序,其中包括ApplicationMaster程序、启动ApplicationMaster的命令等。
  2. RM为该job分配第一个container,运行job的ApplicationMaster。
  3. App Master向Application Manager注册,这样就可以在RM WEB界面查询这个job的运行状态。
  4. App Master采用轮询的方式通过RPC协议向RM申请和领取资源。
  5. 一旦App Master拿到资源,就对应的与NM通信,要求启动任务。
  6. NM为任务设置好运行环境(jar包等),将任务启动命令写在一个脚本里,并通过该脚本启动任务task。
  7. 各个task通过RPC协议向App Master汇报自己的状态和进度,以此让App Master随时掌握各个task的运行状态,从而在task运行失败后重启任务。
  8. App Master向Application Manager注销且关闭自己。

总的来说就是两步:

  • 启动App Master,申请资源;
  • 运行任务,直到任务运行完成。