YARN启动AM流程
1. RM的ClientRMService(implements ApplicationClientProtocol)通过RPC处理submitApplication请求。内部调用RMAppManager的submitApplication方法通知其他相关组件。
2.RMAppManager为该应用程序创建RMAppImpl对象来维护运行状态。发送一个RMAppEventType.START事件。
3.RMAppImpl收到RMAppEventType.START事件后,使用RMAppNewlySavingTransition来处理事件。其中会调用RMStateStore的storeNewApplication方法,已日志形式记录RMAppImpl信息(不启用RM恢复机制时,其默认实现是NullRMStateStore,不会进行任何保存工作。其他实现有MemoryRMStateStore、FileSystemRMStateStore)。此时,RMAppImpl的状态有NEW转移到NEW_SAVING。RMStateStore本身也是个状态机,处理RMStateStoreEventType.STORE_APP事件,结束时反向唤醒RMAppImpl,即步骤4,RMStateStore的状态仍是DEFAULT。
4. 日志记录完成,RMStateStore向RMAppImpl发送RMAppEventType.APP_NEW_SAVED事件。