application --> job -->stage -->task 都是一对多关系。
2.1,Application一个SparkContext就是一个application,通过spark-submit脚本提交给集群。
2.2,DAGRDD依赖组成的有向无环图,来表明一个Application中RDD的依赖关系。
2.3,Job1,没有检查点的正常情况下一个行动算子触发一个Job。
2,如果行动算子的依赖链中有检查点(checkpoint),则至少有一个额外的Job来专门执行检查点功能。如果有多个checkpoint,需要根据下面参数来确定checkpoint Job的数量:
spark.checkpoint.checkpointAllMarkedAncestors
如果值为true,则所有检查点都会执行,父RDD的checkpoint Job先执行。
否则只执行最靠后的RDD的checkpoint Job任务。
3,主线程是串行阻塞式提交Job的,一个行动操作Job执行完毕后执行其依赖链中的checkpoint Job;然后执行下一个行动操作Job及其checkpoint Job。
1,stage分为两类:ShuffleMapStage和ResultStage
2,Spark根据ShuffleDependency来划分Stage,一个ShuffleDependency依赖关系的父RDD为前一个Stage的结束,子RDD(都是ShuffledRDD)下一个stage的开始。一个ShuffleDependency一个ShuffleMapStage,另外还会有一个ResultStage。
3,一个Job stage的总数=零个或者多个ShuffleMapStage+一个ResultStage。
4,stage之间有依赖关系,按照依赖关系的顺序串行执行。
1,Task分为两类:ShfflueMapTask和ResultTask。
2,每个ShuffleMapStage都有一个或者多个ShfflueMapTask,数量为ShuffleMapStage中最后一个RDD的分区数量;
3,每个ResultStage都有一个或者多个ResultStage,数量为ShuffleMapStage中最后一个RDD的分区数量。
4,同一个stage的task之间并行执行,不同stage的task遵循stage的顺序。
5,只有Task才会发送到spark Excutor中执行,涉及到数据计算。其它的概念都只存在于ApplicationMaster中。



