提交流程
- 作业提交
Client
调用job.waitForCompletion
方法,向整个集群提交MapReduce作业。Client
向ResourceManager
申请一个作业id
。RM
给Client
返回资源提交的路径和作业id
。Client
将jar包,切片信息,xml配置文件提交到指定路径。Client
提交完成后向MR
申请运行mrApplicationMaster
。
- 作业初始化
RM
收到Client
的请求以后,将job转换成一个Task,提交到任务队列中。- 某一个空闲的
NodeManager
领取该job。 NM
创建Container
,申请运行mrApp
。NM
下载Client
提交的资源。
- 任务分配
mrApp
向RM
请求运行多个MapTask
任务。RM
将mrApp
提交的任务分配给多个NM
,NM
分别启动MapTask
。MapTask
运行完毕以后,mrApp
向RM
请求运行ReduceTask
。RduceTask
从MapTask
获取相应的分区数据。- 程序运行完毕以后,
MR
向RM
注销自己。