Spark[二]——Spark的组件们[Application、Job、Stage、TaskSet、Task]

Spark[二]——Spark的组件们[Application、Job、Stage、TaskSet、Task]

一、Application

就是用户编写的Spark应用程序,提交到Spark后,Spark为Application分配资源,将程序转换并执行;其中,一个Application包含多个Job

二、Job

由Action算子触发生成的由一个或多个Stage组成的计算作业;
​ 这些Action算子主要包括:reduce、collect、count、first、take、takeSample、takeOrdered、saveAsTextFile、saveAsSequenceFile、saveAsObject、countByKey;

三、Stage

​ 调度阶段,一个taskSet对应的调度阶段,每个Job会根据RDD的宽依赖关系被切分为Stage,每个Stage都包含一个taskSet;

​ 导致Shuffle的算子:repartition, repartitionAndSortWithinPartitions, coalesce, reduceByKey, groupByKey, sortByKey, join, cogroup等。这些算子主要分为三类:

​ 1.重分区:一般情况下重分区都会导致Shuffle,须在整个集群中对之前所有的分区数据进行随机、均匀的打乱,然后放入下游指定分区内;

​ 2.ByKey:因为要对一个Key进行聚合操作,则要保证集群中所有节点上相同的key,一定是到同一个节点进行处理;

​ 3.join:两个RDD进行join,必须将相同key的数据Shuffle到同一个节点上,再进行相同key的两个RDD数据的笛卡尔积;

四、TaskSet

​ 一组关联的,但相互之间没有Shuffle关系的Task集合;

五、Task

​ RDD中的一个分区对应一个task,task是单个分区上最小的处理流程单元。

六、总

​ Stage和Task关系:Stage可以理解为一个MapReduce处理,每个Stage里的Task都可以在一个Executor中完成而不需要Shuffle;

​ Shuffle:map + reduce ——>数据重发

七、图(以一个Application一个Action一个Job为例)

img 注:图为原创,如有转载请注明出处。