Yarn组成架构及Job提交流程

Yarn组成架构

ResourceManager:全局资源管理器,包括ResourceScheduler和ApplicationManager。

ApplicationManager:主要负责接收client传输的job请求,为应用(mr程序)分配第一个Container(资源池)来运行第一个ApplicationMaster,
还负责监控ApplicationMaster,并且在运行失败的时候重启ApplicationMaster。

ResourceScheduler:让每一个节点都充分利用起来,合理的分配和调度的一种管理器。是一个纯调度器,不负责从事任何与应用程序相关的工作。
·
ApplicationMaster:就是一个java程序,类名叫MRAppMaster,所以进程名叫做MRAppMaster。负责监控Map任务和Reduce任务,client提交的
每个mr程序都会产生一个MRAppMaster,负责整个程序的管理。

job提交流程:client提交job请求到yarn上的ApplicationManager,ApplicationManager通知NodeManager开启ApplicationMaster管理mr程序。

ApplicationMaster主要功能:
1.与ResourceScheduler协商获取执行资源。
2.与NodeManager通信以启动、停止任务。
3.监控旗下任务的执行状态(map、reduce),如果失败会重新启动。

NodeManager:单个节点上的资源管理器。

Container(资源池):节点上的资源抽象,封装了多维度资源,如内存、CPU、磁盘、网络等,与虚拟机原理一致。

Job提交的处理流程

Client向ApplicationManager发出job提交请求,ApplicationManager返回hdfs上的提交临时路径。

Client把应用程序的jar包、切片信息、配置信息提交成功后,ApplicationManager把请求转发给ResourceScheduler。

ResourceScheduler判断当前集群是否有空余节点资源来执行job请求,如果没有就等待,如果有就把job请求放到执行队列里。当执行到job请求时让ApplicationManager分配容器,
调用NodeManager分配资源池执行ApplicationMaster。

ApplicationMaster到hdfs上的临时目录中读取共享文件,根据切片信息创建MapTask和ReduceTask。向ResourceScheduler请求执行任务资源,根据ResourceScheduler返回的执行信息,
通知对应节点上的NodeManager开辟资源池执行任务。

MapTask和ReduceTask到hdfs上读取文件,在资源池里处理文件。
Yarn组成架构及Job提交流程