hadoop_book/yarn/yarn_event.md
2023-11-26 17:13:10 +08:00

1.4 KiB
Raw Blame History

简介

Yarn采用了基于事件驱动的并发模型

  • 所有状态机都实现了EventHandler接口很多服务类名通常带有Service后缀也实现了该接口它们都是事件处理器
  • 需要异步处理的事件由中央异步调度器类名通常带有Dispatcher后缀统一接收/派发,需要同步处理的事件直接交给相应的事件处理器。

pic

某些事件处理器不仅处理事件,也会向中央异步调度器发送事件。

事件处理器定义

事件处理器定义如下:

@SuppressWarnings("rawtypes")
@Public
@Evolving
public interface EventHandler<T extends Event> {

  void handle(T event);

}

只有一个handler函数如参是事件

中央处理器AsyncDispatcher

AsyncDispatcher 实现了接口DispatcherDispatcher中定义了事件Dispatcher的接口。主要提供两个功能

  • 注册不同类型的事件。
  • 获取所有的事件处理器。
@Public
@Evolving
public interface Dispatcher {

  EventHandler<Event> getEventHandler();

  void register(Class<? extends Enum> eventType, EventHandler handler);

}

AsyncDispatcher实现了Dispatcher接口也扩展了AbstractService表明AsyncDispatcher也是一个服务

public class AsyncDispatcher extends AbstractService implements Dispatcher {
 ...
}