SparkCore——详述Spark作业调度

前言

我们在之前的博客中讲过,TaskScheduler负责每个具体任务的实际物理调度,DAGScheduler负责将作业拆分成为不停阶段的具体有依赖关系的多批任务,可以理解为DAGScheduler负责任务的逻辑调度。
本篇博客,结合这段时间看过的一些书籍,南国在这里重点回顾一下Spark中作业调度的相关知识。

作业调度的顶层逻辑概述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

作业调度的具体工作流程

作业调度的基本流程如下图所示:
在这里插入图片描述
在这里插入图片描述

调度阶段的拆分

在这里插入图片描述
构建一个新的Stage,这个新的Stage的输出结果的分区方式,则由ShuffleDependency中的Partition对象就决定。

调度阶段的提交

在这里插入图片描述
在这里插入图片描述
此外,每完成一次DAGSchduler的事件循环,也会触发一次从等待和失败列表中扫描并提交Stage的调用过程。

任务集的提交

在这里插入图片描述

完成状态的监控

简单来说,这是通过对外(主要是对TaskSchduler)暴露一系列的回调函数来实现的。对于TaskScheduler来说,这些回调函数主要包括任务的开始结束失败、任务集的失败,DAGSchduler根据这些任务的生命周期进一步维护作业和调度阶段的状态信息。

任务结果的获取

在这里插入图片描述
在这里插入图片描述

调度池和调度模式分析

在这里插入图片描述
在这里插入图片描述

发布了65 篇原创文章 · 获赞 20 · 访问量 1万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章