Spark-stage、task发送、资源任务调度、算子

本文详细介绍了Spark中的Stage、Task的划分与发送,资源和任务调度的原理,以及Transformations和Action算子的使用。通过理解Stage的概念和切割规则,了解Task的执行流程,包括失败重试和推测执行机制,同时探讨了粗粒度和细粒度资源申请的优缺点。最后,文章列举了多个常用算子,如mapPartitionWithIndex、repartition、reduce等,帮助读者深入理解Spark的工作机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spark-stage、task发送、资源任务调度、算子

spark中job/stage/RDD/partition/task之间的对应关系

在这里插入图片描述
Tips:

​ ``一个applicition中有多个job job数量由Action算子决定 job间顺序执行

​ ``一个job对应多个stage stage数量由宽依赖个数决定 stage间顺序执行

​ ``一个stage有多个RDD

​ ``一个RDD有多个partition(计算空间内最小单元/RDD的最小单元)

​ RDD是由分布在各个节点上的partition组成的

​ 同一份数据(RDD)的partition 大小不一,数量不定

​ ``一个stage有多个可并行的task(数据逻辑处理)

​ ``一个task对应一个partition

​ task在内存资源足够的情况下是并行的,当内存资源不足时是串行的

​ partition数默认是和block块数是一致,但是后期shuffle过程是可变的

​ partition由application里的算子和最初读入的数据分块数量决定

​ partition 是弹性分布式数据集RDD的最小单元

​ block位于存储空间、partition 位于计算空间,
​ block的大小是固定的、partition 大小是不固定的,
​ block是有冗余的、不会轻易丢失,partition(RDD)没有冗余设计、丢失之后重新计算得到

一、stage

1概念

任务层面:Application -> job -> stage -> tasks=partition(RDD最小处理单元)
资源层面:Master -> Worker -> Executor -> Threadpool

Spark任务会根据RDD之间的依赖关系,形成一个DAG有向无环图,DAG会提交给DAGScheduler,DAGScheduler会把DAG划分相互依赖的多个stage,划分stage的依据就是RDD之间的宽窄依赖。

遇到宽依赖就划分stage,每个stage包含一个或多个task任务。然后将这些task以taskSet的形式提交给TaskScheduler运行。

stage是由一组并行的task组成。

2切割规则

切割规则:从后往前,遇到宽依赖就切割stage。
在这里插入图片描述

3-1计算模式-Pipeline管道模式

以wordCount为例:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值