MapReduce 作业提交执行过程代码分析(Hadoop 1.2.1)

来源:互联网 发布:平台软件下载 编辑:程序博客网 时间:2024/06/03 06:43


MR工作过程大致分为以下几步:

1:作业配置

2:提交作业 

2.1:从JobTracker获取新的JobID。

2.2:将该Job相关的资源(jar,libjars)发送到JobTracker

2.3:计算输入分片。

2.4:将job.xml发送到JobTrack。

这样就将Job发送给JobTracker。

3:作业初始化

3.1:将接收到的Job放到队列中并生成与之对应的JobInProgress对象来管理该Job。

3.2:JobInProgress调用initTasks()来初始化Task

3.2.1:创建分片并为每个分片生成MapTask和ReduceTask,并生成与之对应的TaskInProgress来管理Task。

3.2.2:将MapTask放入名为 nonRunningMapCache 的Set 中。

3.2.2:将ReduceTask放入名为 nonRunningReduces 的Set中。

这样Task就初始化好了,

4:任务分配

4.1:TaskTracker通过心跳机制与JobTracker通信,当TaskTracker有足够的资源(磁盘,cpu,slot空闲)时,从JobTracker那里获取任务。

4.2:JobTracker 通过TaskSchedule 来分配任务(map任务和reduce任务)。

5:任务执行
5.1:TaskTracker拿到任务之后,通过TaskLauncher.startNewTask()来执行任务。
6:进度和状态更新
TaskTracker上该Job的任务都完成了汇报给JobTracker
7:作业完成
JobTracker修改Job的状态,返回给JobClient。

下面是执行的时序图


0 0
原创粉丝点击