【摘要】:一个Task负责处理RDD的一个Partition,一个RDD的多个Patition会分别由不同的Task去处理,通过之前对于RDD的窄依赖关系的讲解可以发现,在RDD的窄依赖中,子RDD中Partition的个数基本都大于等于父RDD中Partition的个数,所以Spark计算中对于每一个Stage分配的Task的数目是基于该Stage中最后一个RDD的Partition个数来决定的。最后一个RDD如果有100个Partition,则Spark对这个Stage分配100个Task。简单地说,Spark Job中除了最后一个Stage的Task称为resultTask外,其他所有的Task都称为shuffleMapTask。
1.什么是Task
Task是计算运行在集群上的基本计算的单位。一个Task负责处理RDD的一个Partition,一个RDD的多个Patition会分别由不同的Task去处理,通过之前对于RDD的窄依赖关系的讲解可以发现,在RDD的窄依赖中,子RDD中Partition的个数基本都大于等于父RDD中Partition的个数,所以Spark计算中对于每一个Stage分配的Task的数目是基于该Stage中最后一个RDD的Partition个数来决定的。最后一个RDD如果有100个Partition,则Spark对这个Stage分配100个Task。
Task运行于Executor之上,而Execuotr位于CoarseGrainedExecutorBackend(JVM进程)中。(www.xing528.com)
2.Task的分类
Spark Job中,根据Task所处Stage的位置可将Task分为两类,第一类为shuf-fleMapTask,指Task所处的Stage不是最后一个Stage,也就是Stage的计算结果还没有输出,而是通过Shuffle交给下一个Stage使用;第二类为resultTask,指Task所处的Stage是DAG 中最后一个Stage,也就是Stage计算结果需要进行输出等操作,计算到此为止已经结束。简单地说,Spark Job中除了最后一个Stage的Task称为resultTask外,其他所有的Task都称为shuffleMapTask。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。