本题需要模拟一个有限状态机(Finite State Machine, FSM)。我们将每个 RmAppAttempt 视为一个有状态对象,依据“当前状态 +(事件源, 事件)→ 下一状态”的确定性转移来更新。
核心做法:
RmAppAttempt 的当前状态。事件源|对象|事件(空格分隔多个事件)。Apache Hadoop YARN 是一种新的 Hadoop 资源管理器,主要部件为 resource manager 和 node manager 。 resource manager 使用有限状态机维护有状态对象的生命周期。RmAppAttempt 是 resource manager 中用于维护一个 Application 运行尝试的生命周期的数据结构,当某个事件发生时 RmAppAttempt 会根据当前状芯进行状态迁移,同时触发一个其他行为。RmAppAttemp 相关状态和事件简述如下:
1.RmApp 发送 start 事件创建 RmAppAttempt ,初始化后,状态迁移为 submitted。
2.RmAppAttempt 在 submitted 状态下收到资源调度器 (ResouceScheduler) 发来的 app_accepted 事件,状态迁移为 scheduled 。