在MR程序运⾏时,有五个独⽴的进程:
1. YarnRunner:⽤于提交作业的客户端程序
2.ResourceManager:yarn资源管理器,负责协调集群上计算机资源的分配
3. NodeManager:yarn节点管理器,负责启动和监视集群中机器上的计算容器 (container)
4.Application Master:负责协调运⾏MapReduce作业的任务,他和任务都在容器中运⾏,这些容由资源管理器分配并由节点管理器进⾏管理。
5.HDFS:⽤于共享作业所需⽂件。

1. 调⽤waitForCompletion⽅法每秒轮询作业的进度,内部封装了submit()⽅法,⽤于创建JobCommiter实例,并且调⽤其的submitJobInternal⽅法。提交成 功后,如果有状态改变,就会把进度报告到控制台。错误也会报告到 控制台
2. JobCommiter实例会向ResourceManager申请⼀个新应⽤ID,⽤于MapReduce 作业ID。这期间JobCommiter也会进⾏检查输出路径的情况,以及计算输⼊分⽚。
3. 如果成功申请到ID,就会将运⾏作业所需要的资源(包括作业jar⽂件,配置⽂件和 计算所得的输⼊分⽚元数据⽂件)上传到⼀个⽤ID命名的⽬录下的HDFS上。此时副本个数默认是10.
4. 准备⼯作已经做好,再通知ResourceManager调⽤submitApplication⽅法提交作业。
5. ResourceManager调⽤submitApplication⽅法后,会通知Yarn调度器 (Scheduler),调度器分配⼀个容器,在节点管理器的管理下在容器中启动 application master进程。
6. application master的主类是MRAppMaster,其主要作⽤是初始化任务,并接 受来⾃任务的进度和完成报告。
7. 然后从HDFS上接受资源,主要是split。然后为每⼀个split创建MapTask以及参 数指定的ReduceTask,任务ID在此时分配
8. 然后Application Master会向资源管理器请求容器,⾸先为MapTask申请容 器,然后再为ReduceTask申请容器。(5%)
9. ⼀旦ResourceManager中的调度器(Scheduler),为Task分配了⼀个特定节 点上的容器,Application Master就会与NodeManager进⾏通信来启动容器。
10. 运⾏任务是由YarnChild来执⾏的,运⾏任务前,先将资源本地化(jar⽂件,配置⽂件,缓存⽂件)
11. 然后开始运⾏MapTask或ReduceTask。
12. 当收到最后⼀个任务已经完成的通知后,application master会把作业状态设 置为success。然后Job轮询时,知道成功完成,就会通知客户端,并把统计信息输出 到控制台
本文详细介绍了MR程序在运行过程中的关键步骤,包括五个独立进程的作用及其交互方式。此外还阐述了从作业提交到任务完成整个流程中的核心操作,如资源申请、任务调度和执行等。
414

被折叠的 条评论
为什么被折叠?



