【Spark系列】spark中job,stage,task之间的关系

1. 什么是job

Job简单讲就是提交给spark的任务。

2. 什么是stage

Stage是每一个job处理过程要分为的几个阶段。

3.什么是task

Task是每一个job处理过程要分几为几次任务。Task是任务运行的最小单位。最终是要以task为单位运行在executor中。

4. Job和stage和task之间有什么关系

Job <---> 一个或多个stage <---> 一个或多个task

下图是一个job分成了三个stage:

5.一个stage的task的数量是有谁来决定的?

是由输入文件的切片个数来决定的。在HDFS中不大于128m的文件算一个切片(默认128m)。通过算子修改了某一个rdd的分区数量,task数量也会同步修改。

6.一个job任务的task数量是由谁来决定的?

一个job任务可以有一个或多个stage,一个stage又可以有一个或多个task。所以一个job的task数量是  (多个stage的task数量)的总和。



上图就是job1有2个stage,共3个task。

7.每一个stage中的task最大的并行度?

并行度:是指指令并行执行的最大条数。在指令流水中,同时执行多条指令称为指令并行。

理论上:每一个stage下有多少的分区,就有多少的task,task的数量就是我们任务的最大的并行度。

(一般情况下,我们一个task运行的时候,使用一个cores)

实际上:最大的并行度,取决于我们的application任务运行时使用的executor拥有的cores的数量。

如图所示,cores为4,那么最大的并行度就是4。

8.如果我们的task数量超过这个cores的总数怎么办?

--num-executors 2 --executor-memory 512m --executor-cores 2

当前stage有200个task,先执行cores个数量的task,然后等待cpu资源空闲后,继续执行剩下的task。

9.spark执行时读条中的内容讲解

Stage60:当前的stage编号

(105+2)/200:200:当前stage的task的数量;105:已完成的task数量;4:等待执行的task数量。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • spark-submit的时候如何引入外部jar包 在通过spark-submit提交任务时,可以通过添加配置参数...
    博弈史密斯阅读 2,770评论 1 14
  • Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Spark是UC Berkeley AM...
    大佛爱读书阅读 2,849评论 0 20
  • 通过文章“Spark核心概念RDD”我们知道,Spark的核心是根据RDD来实现的,Spark Scheduler...
    尼小摩阅读 683评论 1 9
  • Spark Job执行流程大体如下:用户提交Job后会生成SparkContext对象,SparkContext向...
    imarch1阅读 3,661评论 0 7
  • 为什么需要调优 在大数据计算领域,Spark已经成为了越来越流行、越来越受欢迎的计算平台之一。然而,通过Spark...
    卡卡xx阅读 1,601评论 1 3