Spark源码学习一 (DAGScheduler 作业处理事件模型)

执行时序图

解释:
在DAGScheduler初始化的时候,即创建了个事件处理器,该事件处理器继承于EventLoop中的所有方法和事件队列。在DAG事件处理器初始化前,需先执行父类EventLoop的构造方法,构造方法内,新建了一个线程 dag-scheduler-event-loop ,该线程专门用于轮训处理事件队列中的事件,并把它交给 DAG事件处理器的onRecieve方法处理。

事件发布执行实例:

  • 当rdd执行行动算子时(如collect、count),会调用 runJob方法
  • 而后调用DAGScheduler中的 submitJob方法,进行一些前置判断处理后
  • 而后DAGSchedulerEventLoop调用父类 EventLoop 的 post方法 往eventQueue中添加事件
  • 而后利用DAGScheduler的事件处理模型,轮训eventQueue中的事件,最后交给 子类 DAGSchedulerEventLoop.doOnReceive 方法对事件类型进行模式匹配
  • 而后根据事件类型调用相应的 handleXXX方法进行具体的事件处理
posted @ 2022-09-19 17:36  iullor  阅读(62)  评论(0编辑  收藏  举报