hadoop 作业提交

 

 

 

作业提交对应上图的第4个步骤。作业提交的实现类是JobSubmitter,其中函数submitJobInternal实现的,它的主要工作是:1)检查输入、输出目录;2)计算输入的文件块;3)准备DistributeCache相关信息。4)拷贝作业的jar文件和配置到文件系统。5)提交作业给JobTracker,并开始监控作业的状态。

 

代码如下:

 

 

 

其中,代码:

status = submitClient.submitJob(jobId, submitJobDir.toString(),TokenCache.getTokenStorage());

是通过RPC将相关文件信息传递到JobTracker

现在,JobTracker的哪一部分代码体现了接收信息的呢?这个问题困扰了我很久。JobTracker里的submitJob()函数,该函数中接收提交的任务:创建一个JobInProgress对象,包含作业描述信息(JobProfile)和作业状态信息(JobStatus)。得到作业idJobInProgress后便将这两个对象提交给JobTracker。在submitJob()的最后一句代码:

return addJob(jobId,job)

是作业提交的核心所在。addJob()函数的代码如下:

 

 

 

 

上述代码中的for循环的主要是给jobTracker的各种监听器添加这个job。例如,对于作业调度里会有一个JobInProgressListener来监听提交的作业,进而根据调度算法进行任务分配。

 

 

 

 

 

 

 

 

 

 

 

 

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值