DAGScheduler

https://zhuanlan.zhihu.com/p/165158261

 

 

具体来说DAGScheduler的功能如下:

1.划分和创建Stage:根据RDD之间的依赖类型(窄依赖或宽依赖),为每个Job划分和创建Stage,多个Stage之间相互依赖,形成一个DAG(有向无环图)。

2.决定运行Task的最佳位置:根据RDD的依赖关系,缓存或Shuffling数据的位置来计算运行Task的最佳位置。

3.为每个Stage创建一个TaskSet,并把TaskSet作为参数传递给TaskScheduler。

4.处理失败的Stage:为了从失败中恢复,同样的Stage可能会提交多次。例如:由于前一个Stage的map输出文件丢失,TaskScheduler报告了一个任务失败,DAGScheduler会重新提交丢失的Stage。这是通过一个带有FetchFailed或ExecutorLost的CompletionEvent事件检测到的。DAGScheduler将等待一小段时间以查看其他节点或任务是否失败,然后为任何缺失的Stage重新提交TaskSet。

5.当任务运行完成后,清空所有的缓存和临时数据。

6.处理各种事件,包括内部的事件,也包括Executor端的状态更新等事件。

posted @ 2023-11-26 12:27  guoyu1  阅读(21)  评论(0编辑  收藏  举报