job运行流程(2)---ResourceManager调度job

6、接着上篇文章中的最后一步:ResourceManager服务端执行ClientRMService.submitApplication(),接着开始调用RMAppManager.submitApplication()进而来触发RMAppEvent事件,成为job调度运行事件触发的源头;

(本系列文章主要分析job调度运行流程的主要事件流程,像其它的日志读写事件流程、container监控流程等并没有包括在内)

 

7、接着触发了RMAppImpl.handle(),这其中注册了多种状态转换机制,负责RMAppState的各种状态转换;

 

8、ResourceManager服务启动初始化时会启动一个线程,循环处理container的调度分配,具体过程如下:

ResourceManager.serviceInit->ResourceManager.RMActiveServices.serviceInit

->ResourceManager.createScheduler->ResourceScheduler(默认为CapacityScheduler).reinitialize()

->CapacityScheduler.AsyncScheduleThread.start()

然后循环处理各个nodemanager上面的containers资源分配

CapacityScheduler.schedule()->CapacityScheduler.allocateContainersToNode()

->LeefQueue.assignContainers()->LeefQueue.assignContainersOnNode()

->LeefQueue.assignContainer()->FiCaSchedulerApp.allocate()->RMContainerImpl.handle(RMContainerEventType.START)

更新状态RMContainerState.NEW->RMContainerState.ALLOCATED

 

9、接着后面会触发RMAppAttemptImpl.handle(),这其中和RMAppImpl类似,同样注册了多种状态转换机制,负责RMAppAttemptState的各种状态转换;

 

10、接着后面会触发RMContainerImpl.handle(),同样注册了多种状态转换机制,负责RMContainerState的各种状态转换,这里会触发RMAppAttemptEventType.CONTAINER_ALLOCATED事件,进而开始触发ApplicationMasterLaunch相关事件,至此完成了YARN中的ResourceManager端的job调度流程;

 

整个流程如下图所示:

 

 

 下一篇:http://rainforc.iteye.com/blog/2287249

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值