Hadoop Job提交流程详解:从启动到执行

需积分: 3 4 下载量 200 浏览量 更新于2024-07-20 收藏 254KB DOC 举报
本篇文章主要介绍了Hadoop MapReduce编程中Job提交流程的详细步骤。在Hadoop1环境中,开发人员编写MapReduce程序时,通常会使用`runJob()`方法启动一个JobClient实例,这个实例负责管理和协调作业的生命周期。 首先,JobClient通过`getNewJobID()`接口向JobTracker发起作业提交请求。JobTracker是Hadoop集群中的一个重要组件,它负责作业调度和资源管理。作业ID(例如:job_201101281410_0001)由JobTracker生成,包含了JT(JobTracker的标识符)和作业序列号,便于跟踪作业状态。 在作业提交时,JobClient需要对数据源进行切片(split),这并不是实际的数据处理,而是数据块的引用,以便于后续的Map任务根据这些引用来定位数据。切分后的结果会被保存在`job.splits`资源文件中,每个split对应一个Map任务。JobClient接下来会收集作业执行所需的资源,包括JAR文件(包含作业执行代码)、配置文件以及split文件,这些资源会被上传到JobTracker的工作目录,即用户名称加上作业ID的特定目录。 JobClient上传完毕后,会向JobTracker提交作业,提交的内容仅限于Job ID、资源文件的位置等基础信息,不会直接传递数据或计算细节,因为所有组件都通过HDFS访问数据,保持了数据的一致性和安全性。作业被JobTracker放入队列,等待资源分配。当TaskTracker(负责执行实际任务的节点)可用时,JobTracker会根据split信息将任务分配给TaskTracker。 TaskTracker通过心跳机制定期与JobTracker通信,获取分配的任务。它们会从HDFS中下载所需的资源文件,如JAR包、参数等,然后在本地启动Java虚拟机(JVM)的子进程,运行MapTask和ReduceTask。一个TaskTracker能够并行执行多个任务,这提高了Hadoop集群的处理能力。 总结来说,Hadoop Job的提交流程涉及JobClient与JobTracker之间的交互,以及数据切分、资源上传、任务分配和执行等关键步骤,展现了Hadoop分布式计算模型的有效组织和管理。