1.DAG调度器. 是一个有向无环图!可以理解成是一个树的结构
高级调度,面向阶段(stage-0,stage-1)调度。
为每个job计算stage的DAG,跟踪哪个rdd和stage输出需要 // keeps track of which RDDs andstage outputs are materialized,
寻找最小调度进行运行。
以taskSet方式提交stage给底层任务调度器(实现了在集群上运行)。
taskset包含了独立的task,可以基于集群上的数据运行,如果数据不可用,或许导致失败。
在shuffle的边界过程将RDD打碎创建stage,窄依赖的RDD操作,比如map()和filter()
在每个stage(阶段)中连同task set被放入管道中。
shuffle依赖的操作需要多个阶段,对于每个stage,在末端,都只有一个shuffle依赖相应与另一个stage。
实际的操作管道是在各种RDD的compute方法中执行的。
DAG调度器决定了运行任务的首选位置,依赖于缓存状态和传递给Task调度器实现方法。
处理因为shuffle数据丢失导致failure故障,重复提交old stage的。
不是因为suffle 丢失数据导致failure,由TaskScheduler进行处理。在进行取消整个stage执行
若干次retry。
2.核心概念
[job]
提交给调度器的顶层工作项。</