天天看点

yarn架构极其调度原理

一、整体架构

1.ResourceManager

1).整个集群同一时间提供服务的只有一,负责集群资源的统一管理和调度

2).处理客户端的请求,提交一个进程或杀死一个进程等

3).监控我们的NodeManager,一旦某个NodeManager挂掉,那么该NM上运行的任务需要告诉我们的ApplicationMaster如何进行处理

2.NodeManager

1).整个集群中有多个NM,负责自己本身节点的资源管理和使用

2).定时向ResourceManager汇报本节点的资源使用情况

3).接受并处理来自ResourceManager的各种命令

4).处理来自ApplicationManager的命令

5).单个节点的资源调度

3.ApplicationMaster

1).每个应用程序对应一个ApplicationMaster

2).为应用程序向ResourceManager申请资源(core、memory)分配给内部task

3).需要与NodeManager通信:启动、停止task,task是运行在container里面,AM也是运行在container里面的

4).ApplicationMaster相当于RM和NM之间的中介,必须经过他进行调度,通过任意一个NodeManager启动,RM向他分配任务,AM分配给各个NM

4.Container

1).封装了CPU、Memory等等资源的一个容器

2).是一个任务运行环境的抽象Maptask,Reducetask

3).在这里面运行

二、架构流程

yarn架构极其调度原理

(1)MR程序提交到客户端所载节点,客户端向resourceManager申请一个application进程

(2)RM返回application提交路径

(3)客户端向指定路径提交资源

(4)提交完毕后向RM申请运行mrAppMaster(ApplicationMaster)

(5)RM将用户的请求初始化一个task,按照资源调度器进行分发,任务随机发送给其中一个nodeManager,并在该NM上创建MrAppMaster(MrAppMaster只有一个)

(6)该NM接收到任务后,创建container容器,将job所需要的资源下载到本地

(7)mrAPPMaster向RM申请maptask容器,RM将运行maptask任务分配给其他的NodeManager,其他的NodeManager分别领取任务并创建container容器。

(8)RM向其他接收到任务的NodeManager发送程序启动脚本,这两个NodeManager分别启动maptask,执行maptask,maptask对数据分区排序。

(9)所有的maptask执行完毕后,mrAppMaster向RM申请容器,运行reduce task

(10)reduce task向maptask获取相应分区的数据。

(11)Reducetask运行完毕后,会自动注销自己

图是自己画的,不太好,大概参考下就好,文字叙述的还算清楚,如若有错,请告诉我

继续阅读