博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
job运行流程(2)---ResourceManager调度job
阅读量:3982 次
发布时间:2019-05-24

本文共 1188 字,大约阅读时间需要 3 分钟。

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://phpui.baihongyu.com/

你可能感兴趣的文章
长文干货:如何轻松应对工作中最棘手的13种场景?
查看>>
关于WebClient超时问题
查看>>
创业公司如何与巨头竞争?利用好这9大优势是关键
查看>>
读书 | 如何像沉迷游戏一样对工作上瘾?
查看>>
如何确保自己的Mac数据安全呢?这里有四个“小秘诀”
查看>>
如何用好碎片化时间,让思维更有效率?
查看>>
第一性原理:戳中问题本质的人是怎么思考的?
查看>>
No.147 - LeetCode1108
查看>>
No.148 - LeetCode771
查看>>
No.172 - LeetCode1301
查看>>
No.173 - LeetCode1304
查看>>
No.174 - LeetCode1305 - 合并两个搜索树
查看>>
No.175 - LeetCode1306
查看>>
No.176 - LeetCode1309
查看>>
No.177 - LeetCode1310
查看>>
No.178 - LeetCode1311
查看>>
Mac:终端实用快捷键
查看>>
FE:http状态码
查看>>
No.182 - LeetCode1325 - C指针的魅力
查看>>
No.183 - LeetCode1324
查看>>