Hadoop技术内幕之MapReduce作业的生命周期

Hadoop MapReduce 作业的生命周期, 即作业从提交到运行结束经历的整个过程。

用户编写了一个 MapReduce 程序, 并将其打包成 xxx.jar 文件, 然后使用以下命
令提交作业:

$HADOOP_HOME/bin/hadoop jar xxx.jar \
-D mapred.job.name="xxx" \
-D mapred.map.tasks=3 \
-D mapred.reduce.tasks=2 \
-D input=/test/input \
-D output=/test/output

作业过程分为以下5个步骤:

  1. 作业提交与初始化。
    首先由 JobClient 实例将作业相关信息, 比如将程序 jar 包、 作业配置文件、 分片元信息文件(记录了每个输入分片的逻辑位置信息)等上传到分布式文件系统( 一般为HDFS) 上。然后 JobClient通过 RPC 通知 JobTracker。JobTracker 收到新作业提交请求后, 由作业调度模块对作业进行初始化:为作业创建一个 JobInProgress 对象以跟踪作业运行状况, 而 JobInProgress 则会为每个 Task 创建一个 TaskInProgress 对象以跟踪每个任务的运行状态。TaskInProgress 可能需要管理多个“Task 运行尝试” ( 称为“Task Attempt” )。

  2. 任务调度与监控。
    TaskTracker 周期性地通过 Heartbeat 向 JobTracker 汇报本节点的资源使用情况, 一旦出现空闲资源, JobTracker 会按照一定的策略选择一个合适的任务使用该空闲资源,由任务调度器完成。任务调度器首先选择作业, 然后从该作业中选择任务。同时JobTracker 跟踪作业的整个运行过程, 并为作业的成功运行提供全方位的保障。 首先,当 TaskTracker 或者Task 失败时, 转移计算任务 ; 其次,当某个 Task 执行进度远落后于同一作业的其他 Task 时,为之启动一个相同 Task,并选取计算快的Task 结果作为最终结果。

  3. 任务运行环境准备。
    运 行 环 境 准 备 包 括 JVM 启 动 和 资 源 隔 离, 均 由TaskTracker 实现。TaskTracker 为每个 Task 启动一个独立的 JVM 以避免不同 Task 在运行过程中相互影响; 同时, TaskTracker 使用了操作系统进程实现资源隔离以防止 Task 滥用资源。

  4. 任务执行。
    TaskTracker 为 Task 准备好运行环境后, 便会启动 Task。 在运行过程中, 每个 Task 的最新进度首先由 Task 通过 RPC 汇报给 TaskTracker, 再由 TaskTracker汇报给 JobTracker。

  5. 作业完成
    待所有 Task 执行完毕后, 整个作业执行成功。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值