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 @   iullor  阅读(72)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
点击右上角即可分享
微信分享提示