Spark调度核心组件 1.DagScheduler direct acycle graph, 有向无环图调度器 高级调度器,面向的是stage,为每个job计算stage的DAG图,跟踪rdd和stage的输出,找出最小的调度策略来执行job。 该调度器提交stage给下层的task调度器,以taskSet的形式进行提交。 spark stage通过将rdd进行切割,按照shuffle的边界进行切割。具有窄依赖RDD的操作串联到每个stage的一个taskset中。 shuffle依赖的操作划分成两个stage,上一个stage的输出供下一个stage进行读取。 DAG调度器决定运行每个task的首选位置。 DAG调度器处理因stage输出文件丢失导致的故障,该种情况下,之前的stage需要被重新提交。其他原因的故障由task调度器 来处理。 - Job ActiveJob,用户调用action方法时,job通过submitJob方法进行提交。每个job需要多个阶段. - Stages ShuffleMapStage ResultStage - Tasks Spark执行单位,需要将每个task发送给主机来执行。 - Cache tracking: Dag调度器能够找出哪些RDD被缓存了,放置rdd的重复计算。 - Preferred locations Dag调度器计算运行task的首选位置。 - Cleanup: 2.TaskScheduler 任务调度器 3.BackendScheduler 后台调度器。