MapReduce 运行流程概要

1、MapReduce 运行流程

(1)、JobClient 调用 submitJob(),提交Job

(2)、JobClient 向 JobTracker 请求一个新的JobId(调用 JobTracker.getNewJobId() )

(3)、JobClient检查作业的输出说明,计算作业的输入分片,将运行作业所需要的资源 (Jar、配置文件、输入分片)复制到 HDFS中。

(4)、JobClient告知 JobTracker , Job 准备执行 (调用 JobTracker.submitJob()

(5)、JobTracker将对 submitJob()的调用 放入内部队列中,交给作业调度器 JobScheduler,并初始化

(6)、作业调度器 Job Scheduler 从 HDFS中获取 JobClient 已经计算好的输入分片,为每一个分片创建一个Map Task,以根据配置创建Reduce Task

(7)、TaskTracker 发送心跳 heartbeat, 获得 Task

(8)、TaskTracker 将 Task 所需的Jar复制到本地,将应用程序从分布式缓存复制到本地。 TaskTracker 为Task 新建一个本地目录,将JAR解压到此。 TaskTracker 新建 TaskRunner。

(9)、TaskRunner 启动一个新的 JVM ,运行每个Task。

(10)、TaskTracker与 JobTracker 通过 umbilical接口通信,每隔几秒告知其进度。