浅谈Spark中Job-Stage-Task之间的关系

简介: 笔记

(1)Spark-Job-Stage-Task之间的关系


在开始之前需要先了解Spark中Application,Job,Stage等基本概念,官方给出的解释如下表:

1.png如下图所示,一个Spark程序可以被划分为一个或多个Job,划分的依据是RDD的Action算子,每遇到一个RDD的Action操作就生成一个新的Job。


每个spark Job在具体执行过程中因为shuffle的存在,需要将其划分为一个或多个可以并行计算的stage,划分的依据是RDD间的依赖关系,当遇到宽依赖(Wide Dependency)时因需要进行shuffle操作,这涉及到了不同Partition之间进行数据合并,故以此为界划分不同的Stage。Stage是由Task组组成的并行计算,因此每个stage中可能存在多个Task,这些Task执行相同的程序逻辑,只是它们操作的数据不同。一般RDD的一个Partition对应一个Task,Task可以分为ResultTask和ShuffleMapTask。

2.png


(2)RDD-Partition-Records-Task之间的关系


通常一个RDD被划分为一个或多个Partition,Partition是Spark进行数据处理的基本单位,一般来说一个Partition对应一个Task,而一个Partition中通常包含数据集中的多条记录(Record)。 注意不同Partition中包含的记录数可能不同。Partition的数目可以在创建RDD时指定,也可以通过reparation和coalesce等算子重新进行划分。


通常在进行shuffle的时候也会重新进行分区,这是对于key-value RDD,Spark通常根据RDD中的Partitioner来进行分区,目前Spark中实现的Partitioner有两种:HashPartitioner和RangePartitioner,当然也可以实现自定义的Partitioner,只需要继承抽象类Partitioner并实现numPartitions and getPartition(key: Any)即可。



3.png

将上面的概念串联起来,可以得到下面的运行层次图:

4.png

相关文章
|
存储 分布式计算 大数据
Spark 原理_运行过程_stage 和 task 的关系 | 学习笔记
快速学习 Spark 原理_运行过程_stage 和 task 的关系
207 0
Spark 原理_运行过程_stage 和 task 的关系 | 学习笔记
|
分布式计算 大数据 调度
Spark 原理_运行过程_Job 和 Stage 的关系 | 学习笔记
快速学习 Spark 原理_运行过程_Job 和 Stage 的关系
162 0
Spark 原理_运行过程_Job 和 Stage 的关系 | 学习笔记
|
存储 分布式计算 大数据
Spark 原理_逻辑图_RDD 之间的关系_一对一 | 学习笔记
快速学习 Spark 原理_逻辑图_RDD 之间的关系_一对一
124 0
Spark 原理_逻辑图_RDD 之间的关系_一对一 | 学习笔记
|
SQL 存储 机器学习/深度学习
Hadoop、Hive、Spark 之间的关系?
今天我们就对 Hadoop、Hive、Spark 做下分析对比。
848 0
Hadoop、Hive、Spark 之间的关系?
|
分布式计算 Spark 存储
Spark中Task,Partition,RDD、节点数、Executor数、core数目的关系
梳理一下Spark中关于并发度涉及的几个概念File,Block,Split,Task,Partition,RDD以及节点数、Executor数、core数目的关系。
1564 0
|
分布式计算 Spark 流计算
|
分布式计算 Spark Java
|
存储 分布式计算 Scala
Apache Spark源码走读(六)Task运行期之函数调用关系分析 &存储子系统分析
本篇主要阐述在TaskRunner中执行的task其业务逻辑是如何被调用到的,另外试图讲清楚运行着的task其输入的数据从哪获取,处理的结果返回到哪里,如何返回;以及对存储子系统进行分析 。
2641 0
|
9天前
|
分布式计算 大数据 Apache
ClickHouse与大数据生态集成:Spark & Flink 实战
【10月更文挑战第26天】在当今这个数据爆炸的时代,能够高效地处理和分析海量数据成为了企业和组织提升竞争力的关键。作为一款高性能的列式数据库系统,ClickHouse 在大数据分析领域展现出了卓越的能力。然而,为了充分利用ClickHouse的优势,将其与现有的大数据处理框架(如Apache Spark和Apache Flink)进行集成变得尤为重要。本文将从我个人的角度出发,探讨如何通过这些技术的结合,实现对大规模数据的实时处理和分析。
36 2
ClickHouse与大数据生态集成:Spark & Flink 实战