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


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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值