上篇文章简单写了一个mr程序并且提交至咱们的集群中运行。这篇文章给大家带来mr具体的流程以及进程的变化过程
我们运行sh.start-all.sh 时进程会出现
其中DataNode、NameNode、SecondaryNameNode属于HDFS的进程用于管理文件存储
ResourceManager(下面称RM)和NodeManager(下面称NM)属于yarn框架的进程
一、提交job
1)运行job的jar文件:hadoop jar xxx.xx.xx.WordCountRunner
这个main方法中最后一步提交job至集群:job.waitForCompletion()方法这个时候进程会出现一个RunJar的进程
2)RunJar向RM申请执行一个job,RM会返回job相关资源以及jobID
3)RunJar会将这些资源提交至HDFS并且将提交结果信息返回RM
4)RM将job添加至job队列中
二、初始化
1)RM初始化job任务
2)NM从RM领取job
3)NM分配资源容器(包括IO资源、磁盘资源、网络资源、内存资源等等)
三、mapreduce
1)RM在某个NM节点上启动MRAppMaster(mr主要进程)
2)master向RM注册job
3)master给其他NM上分配MapTask从而产生yarnChild(进行map计算)
4)map计算结束之后将结果给reduce的NM节点进行分析整合
5)将结果写入HDFS
6)master向RM注销自己结束进程
下一篇文章(周日发布)将会带来如何在本地DEBUG 调试Mapreduce程序
本人QQ/Wechat:806751350
github地址:https://github.com/linminlm