
两大能力:
1 维护waiting jobs和active jobs,维护waiting stages、active stages和failed stages,以及与jobs的映射关系;
2 .面向stage的切分
1)最高层的调度层,实现了stage-oriented(面向阶段)调度。DAGScheduler为每个作业计算出一个描述stages的DAG,跟踪哪些RDD和stage输出实现,并找到运行作业的最小计划。然后,它将stages封装为TaskSets提交给在集群上运行它们的底层TaskScheduler实现(TaskScheduler唯一实现类是TaskSchedulerImpl)。任务集包含完全独立的一组任务,这些任务可以根据群集中已经存在的数据(例如,前几个阶段的映射输出文件)立即运行,但如果此数据不可用,它可能会失败。
2)Spark stages 是将RDD图在Shuffle边界处断开来创建的。具有“窄(narrow)”依赖关系的RDD操作(如map()和filter())在每个阶段中被流水线连接到一组任务中,但是具有shuffle依赖关系的操作需要多个阶段(一个阶段写入一组映射输出文件,另一个阶段在屏障后读取这些文件)。最后,每个阶段将只具有对其他阶段的shuffle依赖,并且可以在其中计算多个操作。这些操作的实际管道化发生在各种RDD的rdd.compute()函数中。
3)除了划分stages的DAG之外,DAGScheduler还根据当前缓存状态确定运行每个task的首选位置,并将这些位置传递给底层TaskScheduler(任务调度器)。此外,它还处理由于shuffle输出文件丢失而导致的故障,在这种情况下,可能需要重新提交旧stages。在内部TaskScheduler会处理stage中不是由shuffle文件丢失引起的失败,它会在取消整个stage之前对每个任务重试几次。
4)要从故障中恢复,同一阶段可能需要多次运行,这称为“attempts”。如果 TaskScheduler 报告某个任务由于前一阶段的映射输出文件丢失而失败,则DAGScheduler将重新提交该丢失的阶段。这是通过具有FetchFailed的CompletionEvent或ExecutorLost事件检测到的。DAGScheduler将等待一小段时间来查看其他节点或任务是否失败,然后为计算丢失任务的任何丢失阶段重新提交TaskSets(任务集)。作为这个过程的一部分,我们可能还必须为以前清理stage objects的旧(已完成)stage创建stage objects。由于stage的旧“attempts”中的任务可能仍在运行,因此必须小心映射在正确的stage对象中接收到的任何事件。
yarn standalone Mesos local E2C 运行在实现一样
1 初始化DAGScheduler
当一个spark application代码被提交yanr上时,比如yarn-cluster方式提交,通过SparkSubmit->YarnClusterApplication类中运行的是Client中run方法,Client#run()->ApplicationMaster#userClassThread用来执行application main的线程,当执行applicatin main函数时,会先初始化SparkContext对象,在初始化SparkContext过程会初始化DAGScheduler:

1 taskScheduler
2 LiveListenerBus
3 MapoutputTrackerMaster 下游的task获取suffle信息
4 BlockManagerMaster

当遇到action操作时,就会调用sc.runJob(); Spark的Action算子会触发一个job
1 submit 生成 jobId,和一个jobwater监控job的执行情况
2 
2 划分stage
2.1 handleJobSubmit 创建最后的finalStage

2.2 划分依赖(深度优先)
先从G 开始, G依赖B和F
G和F 先处理是随机的
先处理B,B与G是窄依赖 生成stage3、
F 与G 是宽依赖必须划分为不同的stage 为stage2
处理A与B,为宽依赖,A必须划分为新的依赖stage1
2.3 生成任务
ResultTask(最后一个stage)或者 ShuffleMapTask
3 TaskSchduler
部署不同生成不同的TaskSchduler。SchedulerBacnkend
参考
1 https://www.cnblogs.com/yy3b2007com/p/11094617.html
2 https://blog.csdn.net/qq_16669583/article/details/106026722
