Advertisement

SparkStage生成与Stage源码分析

阅读量:

引入

在前一篇文章《DAGScheduler源码浅析》中,笔者对handleJobSubmitted函数进行了介绍,该函数在生成finalStage的过程中扮演着关键角色。本文将继续深入探讨DAGScheduler生成Stage的实现机制,并对与Stage相关的源代码进行解析。

Stage生成

DAGScheduler负责Stage的调度工作。通过对RDD构建的有向无环图DAG进行划分,从而形成Stage的有向无环图DAG。在该DAG中,以最后一个执行的Stage作为起点,采用广度优先的方式进行遍历,直至到达最初执行的Stage。若当前提交的Stage存在尚未完成的父Stage,则该Stage必须等待其父Stage执行完毕后方可开始运行。此外,DAGScheduler内部维护了多个关键的Key-Value集合结构,用于记录各个Stage的状态信息,以此来防止过早执行或重复提交同一个Stage。其中waitingStages集合用于存储那些仍存在未执行父Stage的Stage,以避免提前启动;runn

全部评论 (0)

还没有任何评论哟~