Stage划分和Task最佳位置算法解密

Hive 的Stage如何划分? 阅读详情

1.Stage划分算法解密
Spark Application中可以因为不同的Action触发众多的Job,也就是说一个Application钟可以有很多的Job,每个Job是由一个或者多个Stage构成的,后面的Stage依赖于前面的Stage,也就是说只有前面依赖的Stage计算完毕后,后面的Stage才会运行
2.Stage划分的已经就是宽依赖,什么产生宽依赖?例如reduceByKey,groupByKey等等
3.由Action(例如Collect)导致了SparkContext.runJob的执行,最终导致了DAGScheduler中的submitJob的执行,其核心是通过发送一个case class JobSubmitted对象给eventProcessLoop,其中JobSubmitted代码如下:

private[scheculer] case class JobSubmitted(
jobId:Int,
finalRDD:RDD[_]
func:(TaskContext,Iterator[_]=>_,
partitions:Array[Int],
callSite:CallSite,
listener:JobListener,
properties:Properties=null)
extends DAGSchedulerEvent

eventProcessLoop是DAGSchedulerEventProcessLoop的具体实例,而DAGSchedulerEventProcessLoop是EventLoop的子类,具体实现EventLoop的onReceive方法,onReceive方法转过来回调doOnReceive
4.在doOnreceive中通过模式匹配的方式把执行路由到

case JobSubmitted(jobId,rdd,func,partitions,callSite,listener,properties)=>.dagScheduler.handleJobSubmitted(jobId,rdd,func,partitons,callSite,listener,properties)

5.在handleJobSubmited中首先创建finalStage,创建finalStage时候会建立父Stage的依赖链条:
补充说明:所谓的missing就是说要进行当前的计算了
二、Task任务本地性算法实现:
1.在submiMissingTasks中会通过调用以下代码来获得任务的本地性:
2.

val taskIdToLocations:Map[Int,Seq[TaskLocation]]=try{
stage match{
case s: ShuffleMapStage =>.
partionsToCompute.map{id,getPreferredLocs(stage.rdd,id))}.toMap
case s:ResultStage =>.
val job=s.activeJob.get
partitionsToCompute.map{id =>
val p =s.partitions(id)
(id,getPreferredLocs(stage.rdd,p))
}.toMap
}
}

2.具体一个Partition中的数据本地性的算法实现为下述代码:

private[spark]
def getPreferredLocs(rdd:RDD[_],partition:Int):Seq[TaskLocation]={getPreferredLocsInternal(rdd,partition,new HashSet)}

在具体算法实现的时候首先查询DAGScheduler的内存数据结构中是否存在当前Partition的数据本地性的信息,如果有的话直接返回,如果没有首先会调用rdd.getPreferredLocations
例如想让Spark运行在Hbase上或者一种现在还没有直接的数据库上面,此时开发者需要自定义RDD,为了保证Task计算的数据本地性,最为关键的方式就是必须实现RDD的getPreferredLocations
3.DAGScheduler计算数据本地性的时候巧妙的借助了RDD自身的getPreferedLocations中的数据,最大化的优化的效率,因为getPreferredLocations中表明了每个Partition的数据本地性,虽然当前Partition可能被persist或者checkpoint,但是persist或者checkpoint默认情况下肯定是和getPreferredLocations中的Patition的数据本地性一致的,所以这就是极大的简化Task数据本地性算法的实现和效率的优化。

Hive stage划分 若想知道Hive stage是怎么划分的,需要对Hive的架构有些了解,下面通过一张图来展示 本文关心Hive是怎么划分stage的,而这一部分主要跟Compiler有关,所以我们先看看Compiler Parser:解析器,解析查询语句,解析成解析树。 Semantic Analyser:语法分析器,将解析树转换成内部查询表示。对列名、类型做检查,类型转换、隐式转换也在这一阶段进行,这一步之后... 阅读详情

相关推荐

第34课: Stage划分和Task最佳位置算法源码彻底解密

第34课:  Stage划分和Task最佳位置算法源码彻底解密Spark作业调度的时候,Job提交过程中Stage 划分的算法以及Task最佳位置的算法。Stage的划分是DAGScheduler工作的核心,涉及作业在集群中怎么运行,Task最佳位置数据本地性的内容。Spark 算子的构建是链式的,涉及到怎么进行计算,首先是划分Stage,Stage划分以后才是计算的本身;分布式大数据系统追求最大

大模型与Agent智能体 1017

hive stage job等划分

1.通过explain可以清晰的看到stage划分。常见的是各个算子(join groupby orderby 等有shuffle)或者是一些filter where等。 2.基于上面的1就可以划分出stage。但是有些stage并不会执行,或者说经过优化器后的filter where会在其他stage里进行。这样,有些stage就是空的stage。 3.基于stage划分,如何确定job数量(总数就是stage数量)。主要是看哪些stage会执行。只有需要执行的stage才会提交yarn,生成具体的j

Jomly Kellenda的博客 1013

【信息科学与工程学】【数据科学】数据科学领域 第六篇 算法设计 01

算法设计

weixin_49199313的博客 1499

一个hive任务的分析

一位开发人员每天跑相同的任务,但是他发现某一天同样的任务处理大约差不多量的数据(都是大约4亿条,hive count的结果),处理时间却相差3倍之多,一个不到一个小时,一个运行了三个小时,记录一下分析步骤。 1. 首先用explain看一下hive语句执行步骤再去找对应的job任务。 可以看出此sql语句分4个任务去跑。 Stage-1:执行join操作 Stage-2:根据St

学无止境 8370

【信息科学与工程学】【数据科学】数据科学领域 第十二篇 大数据主要算法07 任务工序(2)

工序类别工序名称工序描述处理时序输入输出控制点质量指标异常处理数据接入工序​流数据源连接连接到外部流数据源初始阶段流数据源配置流数据连接连接参数配置连接成功率重连机制,失败告警数据拉取从数据源拉取数据持续实时数据源连接原始数据流拉取频率,批大小数据延迟,吞吐量超时重试,流量控制反序列化将二进制数据反序列化数据到达时二进制数据结构化数据记录序列化格式反序列化成功率格式异常处理数据预处理工序​数据验证验证数据完整性和格式反序列化后原始数据记录验证后数据验证规则数据质量合格率丢弃无效数据,异常记录数据清洗清洗脏数

weixin_49199313的博客 779

【信息科学与工程学】【安全领域】第七十篇 负载均衡设备的主要算法01

每个服务器有一个对槽位的偏好排序, 调度器(表)需要为每个槽位分配一个服务器, 目标是整体上满足所有服务器的偏好(即均匀填充), 同时保持稳定性(变化小)。: 对于一个新到达的请求, 如果将其分配到当前有cj个请求(包括正在服务的)的服务器sj, 其期望等待时间为 (cj + 1) / μj。输入:服务器集群S={s1, s2, ..., sn}, 权重W={w1, w2, ..., wn}, 当前指针i。输出:选中的服务器sj。输入:服务器集群S, 各服务器当前活动连接数cj, 各服务器预设权重wj。

weixin_49199313的博客 522

hive基础讲解及进阶

前言:数据时代,大数据可能会成为每个rd的基本功,甚至ai也会是基本功。hive的使用作为入门大数据乃至ai第一步还是不错的。hive涉及内容较多,不能保证大家一听就会,就全面掌握,但尽量做到大家听了后会对一些概念有一定了解,或者说当某种情境下用到hive的某个方面的时候,你知道有这么个相关概念或知识点或需要注意的地方。 一、绕不开的hadoop简介 狭义上说,Hadoop指是一个开发和运行处...

qq_34614587的博客 595

Stage划分算法原理剖析

Stage划分算法原理剖析

Stage划分和Task最佳位置算法源码彻底解密

本課主題 Job Stage 划分算法解密 Task 最佳位置算法實現解密   引言 作业调度的划分算法以及 Task 的最佳位置的算法,因为 Stage 的划分是DAGScheduler 工作的核心,这也是关系到整个作业有集群中该怎么运行;其次就是数据本地性,Spark 一舨的代码都是链式表达的,这就让一个任务什么时候划分成 Stage,在大数据世界要追求最大化的数据本地性,所有最大化的...

无 267

多机器人编队人工势场法协同避障算法原理及实现

ROS及SLAM进阶教程(十一)多机器人编队人工势场法协同避障算法原理及实现避障算法原理避障算法仿真 多机器人协同编队需要将理论和实践紧密地结合起来,其应用包括编队队形生成、保持、变换和路径规划与避障等等都是基于图论的理论基础完成的。 详细请参考ROS及SLAM进阶教程(八)多机器人协同编队算法原理及实现 自主避障功能是机器人编队在各种环境中保持自身安全的重要功能,在编队的基础上加入避障的功能,机器人可扫描到一定范围内的障碍物(包括其他机器人),在即将与之发生冲突时提前规避冲突,以保证自身的安全性,同时

Redglass的博客 1万+

PID循迹控制算法

前言  让小车进行循迹最重要的是获取车相对于循迹线的位置,关于循迹模块的原理我已经在之前的一篇博客上讲过,如果大家没看过的话可以点此链接:PID循迹模块原理。 PID循迹原理简介 图1 循迹车寻线行走图示 图2 市场常见循迹传感器  PID循迹的原理我们大致可以用常识性思维去思考下,如图1所示为循迹车寻线行走图示,现在小车要按照中间那条黑线循迹行走,如果车头往左偏则需要控制方向盘让车往右转,车头往又偏则需要让车往左转。但是仅仅只有左转和右转的话,车一到左边就向右转,一到右边就向左转,则车会来回在线左右晃动

Dinvent的博客 7万+

第34课:Stage划分和Task最佳位置算法源码彻底解密

简介: 一:Stage划分算法解密 二:Task任务本地性算法实现 一:Stage划分算法解密 1.Spark Application中可以因为不同的Action触发众多的Job,也就是说一个Application中可以有很多的Job,每个Job是由一个或者多个Stage构成的,后面的Stage依赖于前面的Stage,也就是说只有前面依赖的Stage计算完毕后

snail_gesture的博客 2266

【GlobalMapper精品教程】074:从Lidar点云创建3D地形模型

本文基于地形点云数据,基于泊松方法、贪婪三角形测量方法和阿尔法形状创建3d地形模型。

智慧空间实验室 2166

[Spark内核] 第34课:Stage划分和Task最佳位置算法源码彻底解密

本課主題 Job Stage 划分算法解密 Task 最佳位置算法實現解密 引言 作业调度的划分算法以及 Task 的最佳位置的算法,因为 Stage 的划分是DAGScheduler 工作的核心,这也是关系到整个作业有集群中该怎么运行;其次就是数据本地性,Spark 一舨的代码都是链式表达的,这就让...

weixin_30376453的博客 138

基于ARKitScenes和YOLOv11的元宇宙3D物体检测系统设计与实现

引言随着元宇宙概念的兴起和增强现实(AR)技术的快速发展,3D物体检测成为了计算机视觉领域的重要研究方向。与传统的2D物体检测不同,3D物体检测不仅需要识别物体类别,还需要估计物体在三维空间中的位置、大小和朝向。本文将详细介绍如何利用ARKitScenes数据集和YOLOv11算法构建一个完整的3D物体检测系统,并提供可视化UI界面。相关工作与技术背景2.1 ARKitScenes数据集介绍ARKitScenes是苹果公司发布的一个大规模的3D场景理解数据集,包含丰富的室内场景数据。

YOLO 411

20、七鳃鳗繁殖与早期生活史:从水质到养殖的全面解析

本文全面解析了七鳃鳗的繁殖与早期生活史,重点探讨了水质对幼体生存的影响、养殖密度与生长关系、变态过程的时间与大小特征,以及人工繁殖在濒危物种恢复和入侵物种控制中的应用。同时,文章分析了大规模养殖面临的挖掘基质需求、空间限制、清洁管理、疾病防控及微生物环境等挑战,并强调实验室养殖对科学研究和种群管理的重要意义。随着技术进步,未来有望扩展更多物种的繁殖研究,揭示七鳃鳗生物学的进化奥秘,实现资源的可持续利用。

l6m7n8的博客 115

大数据IMF传奇行动绝密课程第34课:Stage划分和Task最佳位置算法解密

Stage划分和Task最佳位置算法解密一、Job Stage划分算法解密 二、Task最佳位置算法实现解密一:Stage划分算法解密 1、Spark Application中可以因为不同的Action出发众多的Job,也就是说一个Application中可以有很多的Job,每个Job是由一个或者多个Stage构成的,后面的Stage依赖于前面的Stage,也就是说只有前面依赖的Stage计算完

tom_8899_li的博客 527

RK3588部署实战:利用RGA硬件加速单元优化YOLOv5的图像预处理与推理性能

摘要:本文探讨了在Rockchip芯片上使用RGA(Rockchip图形加速器)实现YOLOv5图像预处理的过程。通过对比RGA和OpenCV两种方式处理图像的速度,发现RGA加速效果不明显且不稳定(13-17fps),分析原因可能是图片尺寸过小和内存操作消耗时间。文章详细介绍了RGA版本的resize和letterbox实现代码,包括图像缩放、边缘填充等功能,并提供了预处理流程和性能监控方法。结果表明在当前场景下RGA尚未达到预期加速效果,可能与官方代码下架和实现细节有关。

know_F0727的博客 293

Stage划分和Task最佳位置算法

1.Stage划分算法解密 Spark Application中可以因为不同的Action触发众多的Job,也就是说一个Application钟可以有很多的Job,每个Job是由一个或者多个Stage构成的,后面的Stage依赖于前面的Stage,也就是说只有前面依赖的Stage计算完毕后,后面的Stage才会运行 2.Stage划分的已经就是宽依赖,什么产生宽依赖?例如reduceByKey,

sundujing的博客 1419

Centos 7 Linux 安装单机 Hadoop(HDFS):下载、安装、配置、测试

本文详细介绍了在 CentOS 7 系统上安装与配置单机 Hadoop(HDFS)的完整流程,涵盖 JDK 环境准备、Hadoop 安装包下载与部署、核心配置文件(core-site.xml、hdfs-site.xml 等)修改、SSH 免密登录设置、HDFS 格式化及服务启动,并通过命令行与 Web 界面验证 HDFS 和 YARN 功能,适合 Hadoop 初学者快速搭建本地测试环境。

寒水馨 · 轻量级技术文档 · hanshuixin.org 3234

HANA-公司间销售ICS-IDOC系统配置-保姆级配置文档

合作伙伴编号:这个客户表示收票方(销售公司在生产公司中所对应的客户代码,卖方开票,买方收票),也就是咱们在配置消息类型输出的时候合作伙伴的类型的一个具体的客户编码,这个是站在发货工厂的角度去看的,也就是EDI 输出的 BP 合作伙伴的编号;在项目实施过程中经常会遇到关联方交易的问题,有公司间采购的业务场景,也会存在公司间销售的业务场景,本文将着重讲解公司间销售在SAP系统中的实现场景。在这个过程中,销售公司向客户开票产生应收,而生产公司向销售公司开票产生自己的应收,同时销售公司向生产公司产生应付。

我小时候很黑的博客 2391

stage 对job 算法

重点 Job Stage 划分算法解密 Task 最佳位置算法实现解密 引言 作业调度的划分算法以及 Task 的最佳计算位置的算法,因为 Stage 的划分是DAGScheduler 工作的核心,这也是关系到整个作业有集群中该怎么运行;其次就是数据本地性,Spark 一般的代码都是链式表达的,这就让一个任务什么时候划分成 Stage,在大数据世界要追求最大化的数据本地性,所有最大化的...

jinghongyimain的博客 176

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

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

stage划分和task最佳位置算法

一:Stage划分算法解密 1, Spark Application中可以因为不同的Action触发众多的Job,也就是说一个Application中可以有很多的Job,每个Job是由一个或者多个Stage构成的,后面的Stage依赖于前面的Stage,也就是说只有前面依赖的Stage计算完毕后,后面的Stage才会运行; 2, Stage划分的已经就是宽依赖,什么产生宽依赖呢?例如reduc

a11a2233445566的专栏 477

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Spark 学习笔记大纲

Spark 内核 第28课:Spark天堂之门解密(点击进入博客)从 SparkContext 创建3大核心对象开始到注册给 Master 这个过程中的源码鉴赏 第29课:Master HA彻底解密(点击进入博客)从 Master 如何基于 ZooKeeper 来做 HA 的源码鉴赏 第30课:Master的注册机制和状态管理解密(点击进入博客)从 Master 的角度去分析它是如...

weixin_30414245的博客 129

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

上一篇: Spark EXecutor彻底解密
下一篇: TaskScheduler原理解析
囧芝麻
博客等级 码龄10年 10粉丝 47原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值