Hadoop2中MR在上Yarn运行的流程

最近一直在补充Hadoop相关知识,发现网上相关知识很多,但是也比较杂,因此希望把自己的理解记录下来,方便日后查阅。首先要说明的是,Hadoop2和Hadoop1中,MapReduce程序的运行流程是不相同的。之前有关JobTracker的文章,讲述的主要是Hadoop1中的知识点。

接下来,我按照流程,说一下自己对于Hadoop2中,MapReduce程序运行在Yarn上的流程。

第一步:客户端提交

写好MapReduce程序,并打包成Jar包后,将程序上传到集群内,然后使用命令行启动。启动后,客户端进行初始化(修改配置等),然后将任务进行切片(Spill)。切片按照一定的算法,每一个片段对应一个Map程序。切片完毕后开始提交流程。由于每一个Job都有一个Configuration,所以当Hadoop检查Configuration,发现使用了Yarn时,则开始联系ResourceManager,并向ResourceManager请求任务Id和资源提交目录。

第二步:数据准备

当ResourceManager响应客户端请求,并返回任务Id和Application资源提交目录。拿到这些信息后,客户端将上一步生成的切片信息、XML配置文件、程序所在Jar包一起上传到ResourceManager提供的目录(一般是HDFS目录),并告知ResourceManager。

第三步:MRAppMaster

ResourceManager收到客户端信息,并开始向各个NodeManager发送任务。当其中一个NodeManager响应后,它接收任务,并成为这个任务的MRAppMaster。很显然,这个节点将向HDFS请求任务信息。于是,第二步上传到HDFS的信息均被下载到MRAppMaster所在的节点中。MRAppMaster读取信息,根据切片数量判断出所需的Map节点个数,然后向ResourceManager请求相应节点。

第四步:开始Map

ResourceManager响应MRAppMaster的请求,然后调用其它NodeManager进行处理。其他NodeManager接到请求后,按照任务内容下载相应的资源,并准备运算所需环境。随后该任务的控制权交由MRAppMaster。MRAppMaster发送启动指令,各个NodeManager下的运算环境进行计算。计算完毕后,将Map结果保存在运算环境中,并向MRAppMaster汇报。

第五步:开始Reduce

MRAppMaster得知所有Map操作都进行完毕后,按照Job的配置,向ResourceManager申请运行ReduceTask的主机。ResourceManager调用其他NodeManager进行处理(和上方一样),于是被选中的NodeManager再次准备运算所需环境,同时Reduce任务的控制权交由MRAppMaster。Reduce运行环境向MRAppMaster获取Map的结果所在的路径,然后找到这些路径,获取相应文件,然后进行Reduce操作。

第六步:保存结果

Reduce操作完毕后,将结果写入指定目录(一般是HDFS目录),然后向MRAppMaster报告。至此,Job运行结束,MRAppMaster资源回收,Map任务和Reduce任务的运算环境回收,ResourceManager向客户端返回运行结果。NodeManager继续监听ResourceManager,准备接收下一个任务。

总结

每个Job都对应一个MRAppMaster,MRAppManager负责管理当前Job的Map和Reduce操作。整个集群只有一个ResourceManager,它处理多个任务。并负责给新的任务分配NodeManager。当MRAppMaster向ResourceManager请求并获取到计算资源后,这些计算资源即交由MRAppMaster进行管理。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值