码迷,mamicode.com
首页 > 其他好文 > 详细

MapReduce 作业的生命周期

时间:2015-12-21 23:35:12      阅读:412      评论:0      收藏:0      [点我收藏+]

标签:

            技术分享

这个过程分为以下 5 个步骤:

步骤 1 作业提交与初始化。用户提交作业后,首先由 JobClient 实例将作业相关信 息,比如将程序 jar 包、作业配置文件、分片元信息文件等上传到分布式文件系统(一般为HDFS)上,其中,分片元信息文件记录了每个输入分片的逻辑位置信息。然后 JobClient 通过 RPC通知JobTracker。JobTracker收到新作业提交请求后,由作业调度模块对作业进 行初始化 :为作业创建一个JobInProgress对象以跟踪作业运行状况,而 obInProgress 则会

为每个Task创建一个TaskInProgress 对象以跟踪每个任务的运行状态,TaskInProgress 可能需要管理多个“Task 运行尝试”(称为“Task Attempt”)。

步骤 2 任务调度与监控。前面提到,任务调度和监控的功能均由JobTracker 完成。 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 执行完毕后,整个作业执行成功。

MapReduce 作业的生命周期

标签:

原文地址:http://www.cnblogs.com/zlslch/p/5065020.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!