第5节、Debug调试源码:获取job执行原理

1.进入job类源码

(1)、在提交job的位置打断点,然后右键提交
1232f80ea35bdb340444b2abc907a5bf.png
(2)、双击选中waitForCompletion,强制进入,就到了Job类里面
1ed4eebb2a5f6b3cc7418ad0aca99a45.png

2.在Job类中打断点

1. 在submit();处打断点

d9f481ac964fc306236cfbd0a5eb10bd.png

2. 进入submit();

518e41b85d150270552c7f456f9f04bd.png

3. 在summit中打断点 以便于调试

b6262cc568c1a8c0c731138044ad1251.png

3.1 ensureState(JobState.DEFINE);

判断Job的状态
b70cc7693e5532e7fa560eafd4ab0474.png

3.2 setUseNewAPI();

处理新旧API兼容性问题
130ea282ad00233cb55a446ec89e28f9.png

3.3 强制进入connect();

选择客户端:YARN或者本地
2047604402e42af6212faeb5a18e96e0.png

3.3.1 转到Cluster类中

f491968d026c8a4d4a85b7aea865ec1b.png

3.3.2 在Cluster类中的初始化位置initialize(jobTrackAddr, conf);

打断点
6786389847b324e138a700b580aff860.png

3.3.3 进入初始化,然后就到了initProviderList();是一个循环,然后选择当前的运行的客户端
    0是YARN客户端
    1是本地客户端

a658a8bba5fa4adc1ef664eb6f8c92f5.png

3.4 找到客户端后,向集群提供job相关信息

(submitJobInternal方法)
1ce5abb17a2ca55f09a3336ad563136c.png
点击进入submitJobInternal方法job方法的核心
8e6b0587f15af797854e0faa5321bc2e.png

3.4.1 在submitJobInternal方法中打断点调试
3.4.2 理解执行原理

(1)验证Job输出路径

checkSpecs(job);  //验证Job输出路径是否存在问题:有无输出路径或者输出路径是否重复,存在问题则抛出异常

(2)设置临时路径
用于后面存放切片信息,job的id,job运行需要的配置信息等

Path jobStagingArea = JobSubmissionFiles.getStagingDir(cluster, conf);

969bf8d8cffcaac7fb495e74b52425b9.png
(3)生成Job的id,这个id具有唯一性
ce09ef9000b56913151a6ed1279dfd27.png
(4)拷贝Job相关配置信息
需注意:本地模式不提交jar包,集群模式会提交jar包

copyAndConfigureFiles(job, submitJobDir);

(5)获取Job路径

Path submitJobFile = JobSubmissionFiles.getJobConfPath(submitJobDir);

(6)切片以及切片信息存放(例如切片个数,切片大小等)
3e8dbf3e1ace5f1a8d7de87d4c69e088.png
0fbd24835b07df38a4091ff7ce633f4c.png
日志中的切片个数显示
0314b206aa90ea83155f37e19219f9d2.png
(7)生成job运行所需要的配置文件(如果是集群模式,还有一个job的jar包)到临时路径
d8c2d4adffe770c8a5bd2e2b5263ac76.png
(8)客户端提交job信息

status = submitClient.submitJob

6ae61cc572920fdd87d467622f89f537.png

3.4.3 继续运行

(1)然后submitJobInternal方法中回到到Java类
f3154958c37d509480977017ce06ddad.png
(2)标记Job运行状态
624843997041b01bb1a5afdde3472495.png
在这里插入图片描述

(3)继续运行 回到第3步summit
f3e13132ba4a5e6b1092593e73d393bc.png

4. summit();下面是job的监控程序代码

32994d8cbef4435b5a6b4f21775464fe.png

5.job任务提交完毕

08c50f2f5f9d5a4f0f93a1e9c2c9a6da.png

6.打印输出

0da816292d9b06e4f4da04f6a687b5ce.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TryBest_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值