目录
一,Yarn集群的工作原理图
二,小作文对上述流程图详细阐述
- 用户输入命令,调用jar包执行单词计数
-
hadoop jar XXX.jar cn.itcast wordCountMain
- 1,客户端向ResourceManager(下文简称RM)发送任务请求
这一步好比,外包公司接到了一个项目
- 2, RM接受任务请求
这一步好比:外包公司接受了这个项目请求
-
3,在nodename上面寻找一个比较空闲的节点.通知启动一个APPMASTER,将信息发送给appMaster,等待AM时候启动成功.如果启动失败,直接报错,告知任务无法进行.
-
外包公司从手底下的众多码农里面找一个较为闲的组长,通知他准备干活
-
- 4,AM启动之后,开始和主节点保持心跳机制,AM获知任务详细信息
- 5,开始根据任务信息,计算共需要多少mapTask和多少 reduceTask
- 6,通过心跳包,把计算任务的结果资源需求发给主节点,进行资源的申请
- 这几步好比:
解释:回复老大,这个需求
需要XXX码农一起干活.具体安排某某等人负责计算,某某位负责汇总.请分配人手给我们
- 这几步好比:
- 7,根据收到的资源申请的结果信息,进行资源的分配工作.如果资源非常宽裕,一次性把所需的资源全部一并返回.如果资源比较紧张,最起码返回素有mapTask所需的资源;
-
解释:审核资源申请.然后答复.如果我手里的码农都比较宽裕,得,一次性把你要的都给你;
如果我手里的码农都很忙,那么我仅给你支持你启动项目的几个码农,你先干着,不够后期再找我要
-
-
8,AM通过心跳包 一致询问,时候准备好了资源.一旦准备好,就将全部的资源信息获取;
- 9,根据获取信息,通知各个NodeManarer 启动相关的程序 启动maptask 告知nodemanarer的任务信息
- 任务信息如:{mapTack:[{node1:1G,node2:1G ……}]}
-
AM小组长拿到RM给的众多码农过之后,就开始吧码农该分配到各个办公室,各个工作岗位上去干活.并且分配给每个码农要干活的任务信息;
-
-
10,每运行的一个container定制 和AP汇总执行任何和任务的进度.并且还基于NM和RM的使用情况,报告资源进度。
-
如果初始化的时候,只是返回了maptask的运行资源;
-
当map执行完毕之后,AM会再洗向RM询问ruduce的资源时候准备好,如果准备好了开始执行rduceTask的任务
-
- 11,当map和reduce任务都运行完成之后,通过AM进度执行完毕,报告给RM 汇报
- 12,RM收回所有资源,通知AM 你可以执行自毁程序了
-
通过container定时 来查看每个码农的任务指令进度,和任务进度,基于办公室和码农的使用情况,真题对RM汇报;
-
如果RM给的码农不够多,只够执行mao阶段的任务,那么AM安排他们执行完毕就会再次询问,我后续的码农准备好了没,给我了我就干活
-
任务完毕,RM收回码农,通知小组解散
-