yarn-事件库和服务库
使用
- 新建Event和EventType
- 新建 AsyncDispatcher 并给 AsyncDispatcher 注册 Event 和对应的 EventHandler
- 调用 AsyncDispatcher 的 getEventHandler 得到 EventHandler 然后调用 handler 的 handle 方法处理 Event
基本原理:
AsyncDispatcher 注册 EventHandler
调用 handle 的时候 将Event放进queue中,内部启动一个线程不断处理 queue的任务。
yarn-状态机
使用
初始化
StateMachineFactory .addTransition(JobStateInternal.NEW, JobStateInternal.INITED, JobEventType.JOB_INIT,new InitTransition()) .addTransition(JobStateInternal.INITED, JobStateInternal.SETUP, JobEventType.JOB_START,new StartTransition()) .installTopology() .make()
新建对应的 Transition
public static class InitTransition implements SingleArcTransition<JobStateMachine,JobEvent>{
@Override
public void transition(JobStateMachine job, JobEvent event) {
System.out.println("Receiving event " + event);
}
}
- 调用 StateMachine 的 doTransition(event.getType(), event)
原理
installTopology的时候创建一个拓扑图,记录每个 State 能接受的 Event,以及接受该 Event 后的操作,以及操作后的 State。
每次有Event传入,调用对应的 Transition ,并且将 此时刻 的状态变为 操作后的状态。