【零】Hadoop中Mapreduce的Job任务提交流程源码解析

一、源码解析步骤

1. 设置断点

在Driver的job任务提交打上断点进行Debug调试进入其中
(F7:进入; F8:下一步; Alt+Shift+F7:强制进入;Shift+F8:退出)

【零】Hadoop中Mapreduce的Job任务提交流程源码解析

进入waitForCompletion()

2. submit() -> 提交任务

submit()方法作用是将我们的job提交到yarn集群(现在是本地模式)

【零】Hadoop中Mapreduce的Job任务提交流程源码解析

进入submit()方法

3. ensureState() -> 判断状态

【零】Hadoop中Mapreduce的Job任务提交流程源码解析

进入ensureState()方法

【零】Hadoop中Mapreduce的Job任务提交流程源码解析

退出ensureState()方法

4. setUseNewAPI() -> 转换新API

【零】Hadoop中Mapreduce的Job任务提交流程源码解析

5. connect() -> 连接集群

【零】Hadoop中Mapreduce的Job任务提交流程源码解析

进入connect()方法:

【零】Hadoop中Mapreduce的Job任务提交流程源码解析

退出connect()方法:

【零】Hadoop中Mapreduce的Job任务提交流程源码解析

6. submitter -> 获取提交对象

【零】Hadoop中Mapreduce的Job任务提交流程源码解析

7. submitJobInternal() -> 提交任务到集群

【零】Hadoop中Mapreduce的Job任务提交流程源码解析

8. checkSpecs(job) -> 检查job的输出配置正不正确

进入submitJobInternal()

【零】Hadoop中Mapreduce的Job任务提交流程源码解析

进入checkSpecs(job)方法

【零】Hadoop中Mapreduce的Job任务提交流程源码解析

9. checkOutputSpecs(job) -> 检查输出目录的配置

进入checkOutputSpecs(job) 方法

【零】Hadoop中Mapreduce的Job任务提交流程源码解析

退出checkOutputSpecs(job)方法
退出checkSpecs(job)方法

10. 读取配置文件

【零】Hadoop中Mapreduce的Job任务提交流程源码解析

Driver.java:

【零】Hadoop中Mapreduce的Job任务提交流程源码解析

11. jobStagingArea -> job的临时目录

【零】Hadoop中Mapreduce的Job任务提交流程源码解析

12. jobID -> 获取身份信息

若是集群任务,临时目录将会出现在HDFS上

【零】Hadoop中Mapreduce的Job任务提交流程源码解析

13. 多人协作设置

【零】Hadoop中Mapreduce的Job任务提交流程源码解析

14. copyAndConfigureFiles() -> 拷贝第一份文件(Jar)

【零】Hadoop中Mapreduce的Job任务提交流程源码解析

15. writeSplits(job, submitJobDir) -> 切片信息

【零】Hadoop中Mapreduce的Job任务提交流程源码解析

16. 多人协作

【零】Hadoop中Mapreduce的Job任务提交流程源码解析

17. writeConf(conf, submitJobFile) -> 提交配置文件信息

【零】Hadoop中Mapreduce的Job任务提交流程源码解析

18. 运行结束

将Jar,切片信息和配置文件提交到临时目录后,整个Job运行结束

【零】Hadoop中Mapreduce的Job任务提交流程源码解析

19. Life

“武汉是个笨笨的小朋友,不小心把自己弄生病了,别害怕,祖国妈妈依然很爱他!别的小朋友也在陪着他。人类医生也在慢慢治好它!武汉小朋友不要伤心,等到冰雪融化,我们就去武汉看樱花吃好吃的。武汉一定要起来啊,人类医生,加油!”

【零】Hadoop中Mapreduce的Job任务提交流程源码解析