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方法进行具体的事件处理
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统