Spark-Spark任务中job,stage,task之间的关系:

  1. 什么是job
    Job简单讲就是提交给spark的任务。
  2. 什么是stage
    Stage是每一个job处理过程要分为的几个阶段。
    3什么是task
    Task是每一个job处理过程要分几为几次任务。Task是任务运行的最小单位。最终是要以task为单位运行在executor中。
  3. Job和stage和task之间有什么关系
    Job----> 一个或多个stage—> 一个或多个task
    下图是一个job分成了三个stage:
    在这里插入图片描述
    4.一个stage的task的数量是有谁来决定的?
    是由输入文件的切片个数来决定的。在HDFS中不大于128m的文件算一个切片(默认128m)。通过算子修改了某一个rdd的分区数量,task数量也会同步修改。
    5.一个job任务的task数量是由谁来决定的?
    一个job任务可以有一个或多个stage,一个stage又可以有一个或多个task。所以一个job的task数量是 (stage数量 * task数量)的总和。
    在这里插入图片描述

上图就是job1有3个task。
6.每一个stage中的task最大的并行度?
并行度:是指指令并行执行的最大条数。在指令流水中,同时执行多条指令称为指令并行。
理论上:每一个stage下有多少的分区,就有多少的task,task的数量就是我们任务的最大的并行度。
(一般情况下,我们一个task运行的时候,使用一个cores)
实际上:最大的并行度,取决于我们的application任务运行时使用的executor拥有的cores的数量。

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐