本帖最后由 regan 于 2015-12-9 14:15 编辑
RDD之间的依赖形成一个有向无环图DAG,依赖关系的分析和判断由DAGSchedular负责。DAGSchedular根据DAG划分的结果,将一个作业划分成多个stage,而划分stage的依据是shuffle操作。
在Spark中,计算的触发发生在action操作,而之前的transformation操作Spark只是记录下依赖关系,而这些依赖关系组成了一张有向无环图,即上面所说的DAG图。如上图中输入经过transformation操作生成A,B,C,D四个RDD,最终生成F,在这过程中没有发生真正的计算,当F要输出时,才真正触发计算操作,在触发真正的计算之前Spark只是记录下了RDD的生成和依赖关系。 有了DAG图,DAGSchedular就可以根据RDD之间的依赖关系,划分出stage,然后将stage中的taskSet提交给TaskSchedular,TaskSchedular会将这些任务分发到Worker节点进行计算。 |