Yarn工作原理浅析

    Yarn作为Hadoop的资源调度框架,承担着扩展Hadoop的重要责任,我们配置Spark时就使用了Spark on Yarn的配置方法,这里简单介绍一些YARN的工作原理,有助于理解整个系统处理作业的过程。

    在配置好的Hadoop环境中,我们输入jps查看进程,可以看到,master节点上的ResourceManager和slave节点上的NodeManager就是属于Yarn的进程。

Yarn工作原理浅析Yarn工作原理浅析

几个需要了解的概念

1. ResourceManager

    ResourceManager是master上的进程,负责整个分布式系统的资源管理和调度。他会处理来自client端的请求(包括提交作业/杀死作业);启动/监控Application Master;监控NodeManager的情况,比如可能挂掉的NodeManager。

2. NodeManager

    相对应的,NodeManager时处在slave节点上的进程,他只负责当前slave节点的资源管理和调度,以及task的运行。他会定期向ResourceManager回报资源/Container的情况(heartbeat);接受来自ResourceManager对于Container的启停命令。

3. Application Master

    每一个提交到集群的作业都会有一个与之对应的Application Master来负责应用程序的管理。他负责进行数据切分;为当前应用程序向ResourceManager去申请资源(也就是Container),并分配给具体的任务;与NodeManager通信,用来启停具体的任务,任务运行在Container中;而任务的监控和容错也是由Application Master来负责的。

4. Container

    那么container又是什么呢?它包含了Application Master向ResourceManager申请的计算资源,比如说CPU/内存的大小,以及任务运行所需的环境变量和队任务运行情况的描述。    

作业执行流程

Yarn工作原理浅析

(1)Client向ResourceManager提交作业(可以是Spark/Mapreduce作业)

(2)ResourceManager会为这个作业分配一个container

(3)ResourceManager与NodeManager通信,要求NodeManger在刚刚分配好的container上启动应用程序的Application Master

(4)Application Master先去向ResourceManager注册,而后ResourceManager会为各个任务申请资源,并监控运行情况

(5)Application Master采用轮询(polling)方式向ResourceManager申请并领取资源(通过RPC协议通信)

  (6) Application Manager申请到了资源以后,就和NodeManager通信,要求NodeManager启动任务

      最后,NodeManger启动作业对应的任务。