Yarn基本架构
YARN主要由ResourceManager、NodeManager、ApplicationMaster和Container等组件构成
1)ResourceManager(RM)主要作用如下
(1)处理客户端请求
(2)监控NodeManager
(3)启动或监控ApplicationMaster
(4)资源的分配与调度
2)NodeManager(NM)主要作用如下
(1)管理单个节点上的资源
(2)处理来自ResourceManager的命令
(3)处理来自ApplicationMaster的命令
3)ApplicationMaster(AM)作用如下
(1)负责数据的切分
(2)为应用程序申请资源并分配给内部的任务
(3)任务的监控与容错
4)Container
Container是YARN中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等。
Yarn工作机制
yarn框架的主要功能是资源调度
我的大体分析:
1、通过hadoop jar WCRunner.jar mr.wordcount.WCRunner来启动进程时,在Runner类里面有这么一句代码:
//将job提交给集群运行
job.waitForCompletion(true);
hadoop会通过这么一句代码来在客户端启动一个RunJar进程,这个进程会向RESOURCE MANAGER申请执行一个job
2、RESOURCE MANAGER收到之后,会返回一个staging-dir,即job相关资源提交的路径和为本job产生的jobID
3、RunJar收到之后就会把相关的资源提交到RESOURCE MANAGER给的那个路径
4、RunJar向RESOURCE MANAGER汇报提交的结果
5、RESOURCE MANAGER得知结果后,会将这次job加入任务队列
6、通过心跳机制,NODE MANAGER 就会知道任务队列里面新增了任务,然后它们就会去领取相关任务
7、领取到任务之后,yarn就会给相关节点分配资源,内存,磁盘,网络等等。即会在节点上产生一个运行资源容器container,相关的jar包和代码什么的也会放在这个容器里面,任务就在这个容器上面运行
8、yarn是不懂相关的运行机制的,它只分配相关的运行资源,具体的运行管理,由MRAppMaster来管理,由mapreduce框架实现。即再资源都分配好之后,RESOURCE MANAGER就会再