WZX's blog 海滩上捡贝壳的孩子

Spark源码阅读(十三):调度系统总览

2020-09-14
wzx

介绍Spark中的调度系统

整体介绍

如图所示,调度系统主要由DAGSchedulerTaskScheduler构成。

  1. Spark调度系统对用户提交的Job,根据RDD之间的依赖关系构建DAG
  2. DAGScheduler负责接收由RDD构成的DAG,将一系列RDD划分到不同的Stage。根据Stage的类型ResultStageShuffleMapStage,给Stage中未完成的Partition创建不同类型的Task ResultTaskShuffleMapTaskDAGScheduler每个Stage中的task以TaskSet的形式提交给TaskScheduler继续处理
  3. TaskScheduler负责从DAGScheduler接收TaskSet创建TaskSetManagerTaskSet进行管理,并将此TaskSetManager添加到调度池中,最后将对Task的调度交给SchedulerBackend处理。SchedulerBackend首先申请TaskScheduler,按照Task调度算法对调度池中的所有TaskSetManager进行排序,然后对TaskSet按照最大本地性原则分配资源,最后在各个分配的节点上运行TaskSet中的Task。使用集群管理器分配资源与任务调度,对于失败的任务还会有一定的重试与容错机制
  4. 执行任务,并将任务中间结果和最终结果存入存储体系

REFERENCE

  1. Spark内核设计的艺术:架构设计与实现

Similar Posts

Comments