Spark任务划分概念

spark最新版本3.0.0中job划分、调度以及任务的提交执行流程源码分析 文章目录前言一 整个任务的流程图示二 任务的划分、调度和执行1 调用行动算子生成job2 划分阶段并发送Task给Executor3 Executor执行Task 前言 上文我们对spark整个应用运行流程进行了整体的分析,但是后面最后一步关于任务的划分、调度和执行就一笔带过了,今天我们就来对spark任务的执行流程的底层源码分析,搞懂这个会对我们理解spark几个术语有比较清楚的理解了,如: 术语 描述 关系 job 工作 调用一个行动算子就会有一个job生成 stage 阶段 有一 阅读详情

Application


使用 SparkSubmit 提交的个计算应用,一个 Application 中可以触发多次 Action,触发一次 Action 产生一个 Job,一个 Application 中可以有一到多个 Job

Job


Driver 向 Executor 提交的作业,触发一次 Acition 形成一个完整的 DAG,一个 DAG 对应一个 Job,一个 Job 中有一到多个 Stage,一个 Stage 中有一到多个 Task


DAG


概念:有向无环图,是对多个 RDD 转换过程和依赖关系的描述,触发 Action 就会形成一个完整的DAG,一个 DAG 对应一个 Job


Stage


概念:任务执行阶段,Stage 执行是有先后顺序的,先执行前的,在执行后面的,一个 Stage 对应一个TaskSet,一个 TaskSet 中的 Task 的数量取决于 Stage 中最后一个 RDD 分区的数量


Task


概念:Spark 中任务最小的执行单元,Task 分类两种,即 ShuffleMapTask 和 ResultTask

ShuffleMapTask输出的是shuffle分区结果

ResultTask输出的是最终结果

Task 的数量决定并行度,同时也要考虑可用的 cores

task中就是对FinalRdd(最后一个RDD)的迭代器的调用。


TaskSet


保存同一种计算逻辑多个 Task 的集合,一个 TaskSet 中的 Task 计算逻辑都一样,计算的数据不一样

  • spark源头Rdd会将数据源切分成多个分片并行处理,那么就有4个算子链
  • 将算子链根据是否shuffle进行拆分,reduceBykey会进行shuffle操作,因此产生两个stage
    • 第一个stage包含4个分区用4个task调度,这四个task就组成了一个taskset,这4个task不对外输出,只是中间流程,因此叫做shuffleMapTask
    • 第二个由于reduceByKey修改了分区数,所以变成了两个分区,那就用两个task调度,这两个task就组成了另一个taskset,这两个task是对外输出的因此叫做ResultTask
大数据之 spark 任务划分 在实际运行过程中,Spark的DAGScheduler首先将Job拆分成Stages,然后TaskScheduler将Stages进一步分解成Task,并将Task分配给各个Executor执行。这个过程确保了数据处理可以在分布式集群上高效并行运行。Apache Spark 中的任务划分(Task Scheduling)是一个关键的优化过程,它影响到整个Spark作业执行的效率和性能。 阅读详情

相关推荐

大数据之Spark(五):DAGScheduler 的任务划分

Spark是如何根据DAG生成计算任务呢? 根据依赖关系将DAG划分为不同的阶段(Stage)。 对于窄依赖,由于分区依赖关系的确定性,分区的转换处理可以在同一个线程里完成,窄依赖被划分到同一个执行阶段;对于宽依赖,由于Shuffle的存在,只能在父RDD Shuffle处理完成后,才能开始接下来的计算。因此宽依赖就是阶段划分的依据,具体划分规则:从后往前,遇到宽依赖切割为新的Stage。每个Stage由一组并行的Task组成。如下图所示。 1、阶段划分从RDD G开始中,G依赖于B和F,先处理B

Oak_Komorebi的博客 869

Spark 任务划分

Spark 任务划分

qq_41982570的博客 666

Spark_Spark中 Stage, Job 划分依据 , Job, Stage, Task 高阶知识

Task内部有一个成员变量:preferredLocations表明了这个Task的位置偏好,这个变量的值是根据Task的数据的位置得到的,可以是一个hostName或者execotorId。例如,如果Task的数据是在192.168.5.101和192.168.5.102这两台机器上,那么:forExecutor是一个HashMap,key为executorId,value是preferredLocations为这个executor的所有task的taskId。

迎难而上 3595

Spark Core之Stage、Tank&Job划分

目录 《RDD的依赖关系》 一、RDD的Job划分 二、RRD的Job生成和提交的四给阶段 三、Stage的划分 四、Task划分 五、WebUI中查看Stage和Task Stage的划分那么要想清楚RDD的依赖关系,可点击下面了解 《RDD的依赖关系》 窄依赖,父RDD的分区最多只会被子RDD的一个分区使用, 宽依赖,父RDD的一个分区会被子RDD的多个分区使用(宽依赖指子RDD的每个分区都要依赖于父RDD的所有分区,这是shuffle类操作) 一、RDD的Job划分...

CyAurora的博客 988

Spark中RDD的血缘关系|依赖关系|窄依赖|Job调度|Stage任务划分|查看job、stage、task个数界面

血缘关系 代码实现 依赖关系 代码实现 窄依赖 窄依赖表示每一个父RDD的Partition最多被子RDD的一个Partition使用,窄依赖我们形象的比喻为独生子女。 宽依赖 宽依赖表示同一个父RDD的Partition被多个子RDD的Partition依赖,会引起Shuffle,总结:宽依赖我们形象的比喻为超生。 依赖小结 具有宽依赖的 transformations 包...

SmallScorpion 1217

Spark大数据处理讲课笔记3.7 Spark任务调度

本节核心介绍Spark计算模型中的DAG概念及其在任务调度中的应用。通过理解有向无环图结构,读者能掌握RDD转换如何形成DAG,并依据宽依赖(shuffle操作)划分Stage以实现高效的任务并行与资源调度。实例分析了不同场景下Stage的划分依据与过程,以及RDD在整个Spark运行流程中的关键作用。

howard2005的专栏 1164

【理论】(spark 二)spark core之RDD:基础概念、特点、stage任务划分与hello spark

通过了解RDD的概念、特点、以及以一个scala程序快速认识RDD

hiliang521的博客 772

当GO.db安装失败时,生物信息学新手应该知道的5个底层逻辑

本文为生物信息学新手提供了解决GO.db安装失败的5个关键底层逻辑,包括网络连接与镜像源设置、版本兼容性检查、依赖关系管理、SQLite存储机制理解以及调试技巧。特别针对Bioconductor的GO.db包安装问题,详细介绍了如何通过切换国内镜像、管理版本冲突和解决依赖问题来成功安装,帮助用户高效克服常见安装障碍。

weixin_29062823的博客 409

【Spark源码】RDD阶段划分&任务划分

工具环境 Intellij Idea 2018.03 spark3.0.0 <dependencies> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.12</artifactId> <version>3.0.0</version> </d

九筒的博客 837

Kaggle | 总奖池超200万美金的数学竞赛AIMO2冠军方案

••••结论1:通过结合高质量大规模数据集、工具集成推理和生成式选择方法,可以构建在挑战性数学问题上达到最先进水平的语言模型。本文的方法在 AIMO-2 竞赛中的胜利以及在多个数学基准上的 SOTA 结果验证了这一策略的有效性。结论2:发布 OpenMathReasoning 数据集、OpenMath-Nemotron 模型和代码是社区的宝贵财富。

hxshine的博客 1198

Qwen-Image LoRA训练实战:从数据准备到异常修复的全流程解析

本文详细解析了Qwen-Image LoRA训练的全流程,从数据准备到参数优化再到异常修复。通过实战案例展示了如何利用LoRA技术微调Qwen-Image模型,提升中文场景下的图像生成质量,特别针对手脚生成异常等问题提供了有效解决方案。文章还分享了中文提示词优化技巧和高级训练方法,帮助开发者高效训练出高质量的LoRA模型。

lemon的博客 969

Spark学习笔记(10)——RDD阶段划分和任务划分

一、阶段划分的概念 通过前面的学习我们知道RDD转换算子从分区数据是否会重新组合的角度看可分为两类: 一类是如map、mapPartitions等,一个分区的数据经过处理后仍然还在同一个分区。各个分区的数据不存在互相依赖的关系,即OneToOne依赖,因此各个分区在处理完自己的任务后就可以直接通过转换算子进入新的RDD,不需要谁等谁。 而另一类转换算子如groupBy、reduceByKey等,分区数据需要重新组合(即存在shuffle操作)。各个分区的数据存在互相依赖的关系,即Shuffle依赖(宽依赖

m0_56602092的博客 1805

物理机centos7系统重启后直接进入dracut

Warning: /dev/centos/root does not exist Warning: /dev/mapper/centos-root does not exist 在shell命令行执行以下: dracut:/# lvm vgscan dracut:/# lvm vgchange -ay dracut:/# exit 之后可以正常进入系统(测试正常)。 但是重启之后依然会进入dracut模式,永久解决如下: 查看kernel文件 [root@ecs ~]# ls -ltrh /boot

魏志标的博客 1万+

Spark内核之Driver的工作流程(Stage划分、Task划分、Task调度)

fff

TRX的博客 3823

FunASR与FreeSWITCH融合实战:从零构建高精度语音质检系统

本文详细介绍了如何将FunASR与FreeSWITCH融合,构建高精度语音质检系统。通过实时语音听写技术,结合热词定制和多模型切换,实现客服中心等场景的自动化质检,显著提升识别准确率和效率。系统架构涵盖音频采集、识别处理和业务应用三层,支持负载均衡和性能优化,适用于工业级部署。

weixin_29198045的博客 980

AI 智能体(Agent)应用开发工程师 · 进阶面试 (五)

在有多位 Agent 共同参与决策时(如评审委员会、代码审查小组),它们可能提出截然相反的建议。共识机制就是用来在这种冲突中得出唯一行动方案的规则。常用机制:多数投票:每个 Agent 一票,根据投票结果决定。实现简单,但忽略了专业度差异。加权投票:根据 Agent 的角色重要性或历史表现赋予不同权重,例如首席架构师 Agent 的票权重是普通开发者 Agent 的 2 倍。管理者仲裁:由一个权限更高的 Manager Agent 听取各方理由后做出最终裁决。这类似于层级制组织决策。辩论收敛。

篮球界最会写bug的人;程序猿中打球最菜的人。 395

Spark核心概念释义及基本运行流程

一个application包括driver program和executors,一个application应用可以有多个job组成,一个action算子对应一个job,一般而言,程序中有几个action算子就会产生几个job。一个job可以由多个stage组成,一个stage对应多个task,task由dirver发送到各个executor,task运行在executor中,exector以并行的方式执行task。每个Executor独占一个Container

星空的风fly 4898

使用virtuoso gds转lef操作方法

2) 然后,需要创建Pin,这里Pin的概念不同于label/text,是有实际金属的,二者的区别类似于pr中的port和terminal。1) 首先,需要画prBoundary,这个用drawing层的prBoundary画是不行的,不过建议pr阶段就把prBoundary转到gds里,在virtuoso layout中画prBoundary就比较容易。另外,用Create - Create Pin也可以创建pin,更适用于PG pin,操作时先给pg shape打label,最好放正中间。

m0_61544122的博客 1380

spark中RDD的Stage任务划分

1)DAG有向无环图 DAG(Directed Acyclic Graph)有向无环图是由点和线组成的拓扑图形,该图形具有方向,不会闭环。例如,DAG记录了RDD的转换过程和任务的阶段。 2)RDD任务切分中间分为:Application、Job、Stage和Task (1)Application:初始化一个SparkContext即生成一个Application; (2)Job:一个Acti...

jinglinqwert的博客 1053

LVGL 蜂巢气泡菜单(Hex Menu)

h。

摸鱼专家 178

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

spark笔记(一)之RDD任务划分

一.Driver & Executer Driver:创建spark上下文对象的应用程序称之为Driver,或者驱动器;只要创建spark上下文对象的类,可以称之为Driver类 * 功能:发送任务给Executor进行计算 * 总结:除Executoru算子计算功能之外的代码都属于Driver Executor:接收认为并执行任务,称之为执行器(也就是说把计算的任务...

weixin_44604159的博客 878

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Spark中的Stage概念

Spark中的Stage概念

qq_42952637的博客 1979

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Spark任务中spark分区数、task数目、core个数、worker节点个数、excutor数量的确定

每一个过程的任务数,对应一个inputSplit1, Partition输入可能以多个文件的形式存储在HDFS上,每个File都包含了很多块,称为Block。 当Spark读取这些文件作为输入时,会根据具体数据格式对应的InputFormat进行解析,一般是将若干个Block合并成一个输入分片,称为InputSplit,注意InputSplit不能跨越文件。 随后将为这些输入分片生成具体的Task。InputSplit与Task是一一对应的关系。 随后这些具体的Task每个都会被分配到集群上的某个节点的某.

weixin_44873607的博客 1430

Spark集群基础概念 与 spark架构原理

一、Spark集群基础概念         将DAG划分为多个stage阶段,遵循以下原则: 1、将尽可能多的窄依赖关系的RDD划为同一个stage阶段。 2、当遇到shuffle操作,就意味着上一个stage阶段结束,下一个stage阶段开始 二、spark架构原理       1、Spark架构原理               Driver 进程               ...

newchitu的博客 311

Spark 的核心 RDD 以及 Stage 划分细节,运行模式总结

精选30+云产品,助力企业轻松上云!>>> ...

程序员小陶的大数据分享 341

Spark的几个基本概念:Driver和Job,Stage

Driver Program, Job和Stage是Spark中的几个基本概念。Spark官方文档中对于这几个概念的解释比较简单,对于初学者很难正确理解他们的涵义。官方解释如下(http://spark.apache.org/docs/latest/cluster-overview.html): Driver Program: The process running the main() func

JwLee的专栏 2万+
上一篇: action
下一篇: sparkToHbase
JNWsong
博客等级 码龄9年 287粉丝 204原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值