Hadoop深入学习:MapReduce作业的提交流程和作业的生命周期

在本节中我们主要来学习MapReduce作业的提交流程和作业的生命周期。
一个标准的MapReduce作业的执行包括的流程是:代码编写——>作业配置——>作业提交——>Map Task的分配与执行——>处理中间结果(shuffle阶段)——>Reduce Task的分配与执行——>输出最终结果数据——>作业完成。下面是详细的作业流程:
[img]http://dl2.iteye.com/upload/attachment/0085/0209/a32115da-2b97-38a1-bc2a-fc9addadc4a1.jpg[/img]

MapReduce作业的生命周期如下图所示:
[img]http://dl2.iteye.com/upload/attachment/0085/0213/70c17bd7-99cc-3515-9b5c-c0d2707c98bb.jpg[/img]

如上图所示,MapReduce作业的生命周期涉及5个步骤:
1)、作业提交初始化。
用户提交作业后,首先由JobClient对象将作业的相关信息上传到HDFS上,其中分片元信息记录了每个输入分片数据起始位置、长度和逻辑位置等信息。然后JobClient对象通过RPC通知JobTracker,而JobTracker受到新作业的提交请求后,有作业调度模块开始对作业进行初始化:为作业创建一个JobInProgress对象已跟综整个作业的运行状况,而JobInProgress则会为作业分解的每一个Task(Map Task和Reduce Task)创建一个TaskInProgress对象以跟踪每一个任务的运行状态,TaskInProgress有可能需要管理多个Task Attempt。
2)、任务调度与监控。
之前我们已经学过,MapReduce的任务调度和监控功能都有JobTracker完成,TaskTracker节点会周期性的通过心跳向JobTracker节点汇报本节点的状况,一旦有空闲资源出现,JobTracker就会按一定的策略选一个合适的任务使用该空闲资源,这个工作有任务调度起来完成,选择任务时需要重点考虑执行任务的数据本地性。
JobTracker跟踪作业整个的执行过程。当某个Task的执行进度远远落后于同一类作业的其他Task时,JobTracker会执行推测式执行,在其他TaskTracker上启动一个相同的Task,并选取执行速度最快的Task结果为最终结果,并杀死较慢的Task。
3)、任务运行时环境准备。
为运行时环境准备包括JVM启动和支援隔离,均由TaskTracker节点实现,为每一个Task启动一个独立运行JVM以避免不同的Task在运行是相互影响。
4)、任务执行。
在运行时环境准备好后,TaskTracker便会启动Task,然后再整个任务运行过程中,周期性的向JobTracker发送心跳来汇报自己的状态,并接受相关命令。
5)、作业完成。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值