通过RDD的foreach方法触发Action
调用SparkContext的runJob方法
DAGScheduler的runJob方法
DAGSchedulerEventProcessLoop接收到JobSubmitted
handleJobSubmitted分析
分析调用的submitStage方法,这里只要就是对父stage的划分(宽依赖和窄依赖)
分析getMissingParentsStages,从下往上一步步分析父rdd是否为宽依赖,若为宽依赖就以这个父rdd为界向上划分新的stage
然后我们回到上面的submitStage方法中的出口,submitMissingTasks方法
SubmitMissingTasks中最为关键的部位
分析一下stageStart方法的实现
SubmitMissingTasks方法非常复杂,并且其中涉及了继承Serializable的类,可见我们的分析已经到达了通信层.由于时间关系把这个方法的解读放到下次吧.