hadoop的job提交的源码分析

1Job提交

编写MapReduce代码最后会调用"Job.waitForCompletion(true);",将作业提交到集群中,并等待完成。

1.1waitForCompletion

verbose参数用来决定是否将运行进度等信息输出给用户。

 

JobStateJob的状态:定义好等待运行的和正在运行中的两种Job状态。

 

准备好未执行的Job会调用submit();方法进行执行。

1.2submit

submit()首先会检查是否正确使用了new API,这通过setUseNewAPI()检查旧版本的属性是否被设置来实现的。

 

 

 

对象刚创建的时候是DEFINE状态,在这个状态下可以设置作业的一些调度前的配置,比如Mapper类、Reducer类、Reduce task数量、分区类、输入输出格式化类等。当作业被submit();集群上之后就变成RUNNING状态,此时不能再设置上面的信息,这时作业处于调度运行阶段。

构造提交器:

 

1.3submitJobInternal

在内部调用submitJobInternal()方法提交到文件系统执行。

 

检查输出目录正确性:

 

获取作业提交到集群的路径:

 

获取JobID

 

会调用submitJob方法:

 

1.4submitJob

准备工作全部完成之后,开始真正执行提交执行:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值