【零】Hadoop中Mapreduce的Job任务提交流程源码解析
一、源码解析步骤
1. 设置断点
在Driver的job任务提交打上断点进行Debug调试进入其中
(F7:进入; F8:下一步; Alt+Shift+F7:强制进入;Shift+F8:退出)
进入waitForCompletion()
2. submit() -> 提交任务
submit()方法作用是将我们的job提交到yarn集群(现在是本地模式)
进入submit()方法
3. ensureState() -> 判断状态
进入ensureState()方法
退出ensureState()方法
4. setUseNewAPI() -> 转换新API
5. connect() -> 连接集群
进入connect()方法:
退出connect()方法:
6. submitter -> 获取提交对象
7. submitJobInternal() -> 提交任务到集群
8. checkSpecs(job) -> 检查job的输出配置正不正确
进入submitJobInternal()
进入checkSpecs(job)方法
9. checkOutputSpecs(job) -> 检查输出目录的配置
进入checkOutputSpecs(job) 方法
退出checkOutputSpecs(job)方法
退出checkSpecs(job)方法
10. 读取配置文件
Driver.java:
11. jobStagingArea -> job的临时目录
12. jobID -> 获取身份信息
若是集群任务,临时目录将会出现在HDFS上
13. 多人协作设置
14. copyAndConfigureFiles() -> 拷贝第一份文件(Jar)
15. writeSplits(job, submitJobDir) -> 切片信息
16. 多人协作
17. writeConf(conf, submitJobFile) -> 提交配置文件信息
18. 运行结束
将Jar,切片信息和配置文件提交到临时目录后,整个Job运行结束
19. Life
“武汉是个笨笨的小朋友,不小心把自己弄生病了,别害怕,祖国妈妈依然很爱他!别的小朋友也在陪着他。人类医生也在慢慢治好它!武汉小朋友不要伤心,等到冰雪融化,我们就去武汉看樱花吃好吃的。武汉一定要起来啊,人类医生,加油!”