在上一篇应用程序在YARN中的整体运行流程和状态机 (ResourceManager端)我们详细分析了,应用程序在RM端的状态机变迁,掠过了在NodeManager部分,这篇文章我们详细分析,作业运行流程中在NodeManger上面的状态机变迁包括:Container的资源本地化过程,Container启动过程,Container运行结束后的清理过程。
-
发起NodeManager上面的容器运行首先,调用ContainerManagerImpl的startContainers方法,向ApplicationImpl对象发出ApplicationEventType.INIT_APPLICATION事件,从而ApplicationImpl进入INITING状态,然后向ApplicationImpl对象发出ApplicationEventType.INIT_CONTAINER事件,而ApplicationImpl的状态维持不变,只是把Container加入到对应的集合中。
-
ApplicationEventType.INIT_APPLICATION事件的伴随函数,向LogAggregationService发送APPLICATION_STARTED事件。
-
在日志聚合处理成功的情况下向ApplicationImpl对象发出APPLICATION_LOG_HANDLING_INITED事件。ApplicationImpl的状态机保持不变,还是INITING。
-
APPLICATION_LOG_HANDLING_INITED事件的伴随函数中,向 ResourceLocalizationService对象发送LocalizationEventType.INIT_APPLICATION_RESOURCES事件。
-
然后ResourceLocalizationService