SortShuffleManager的bypass机制触发条件是什么?

news2024/11/16 19:54:53

SortShuffleManager的运行机制主要分成两种,一种是普通运行机制,另一种是bypass运行机制。当shuffle write。

task的数量小于等于spark.shuffle.sort.bypassMergeThreshold参数的值时(默认为200),就会启用bypass机制。

该模式下,数据会先写入一个内存数据结构中(默认5M),此时根据不同的shuffle算子,可能选用不同的数据结构。如果是reduceByKey这种聚合类的shuffle算子,那么会选用Map数据结构,一边通过Map进行聚合,一边写入内存;如果是join这种普通的shuffle算子,那么会选用Array数据结构,直接写入内存。

(2)接着,每写一条数据进入内存数据结构之后,就会判断一下,是否达到了某个临界阈值。如果达到临界阈值的话,那么就会尝试将内存数据结构中的数据溢写到磁盘,然后清空内存数据结构。

(3)排序

在溢写到磁盘文件之前,会先根据key对内存数据结构中已有的数据进行排序。

(4)溢写

排序过后,会分批将数据写入磁盘文件。默认的batch数量是10000条,也就是说,排序好的数据,会以每批1万条数据的形式分批写入磁盘文件。

(5)merge

一个task将所有数据写入内存数据结构的过程中,会发生多次磁盘溢写操作,也就会产生多个临时文件。最后会将之前所有的临时磁盘文件都进行合并成1个磁盘文件,这就是merge过程。由于一个task就只对应一个磁盘文件,也就意味着该task为Reduce端的stage的task准备的数据都在这一个文件中,因此还会单独写一份索引文件,其中标识了下游各个task的数据在文件中的start offset与end offset。

触发条件

bypass运行机制的触发条件如下: 1)shuffle map task数量小于spark.shuffle.sort.bypassMergeThreshold=200参数的值。 2)不是map combine聚合的shuffle算子(比如reduceByKey有map combie)。

bypass运行机制触发条件

bypass运行机制的触发条件如下:

1)shuffle map task数量小spark.shuffle.sort.bypassMergeThreshold=200参数的值。

2)不是map combine聚合的shuffle算子(比如reduceByKey有map combie)。

• 此时task会为每个reduce端的task都创建一个临时磁盘文件,并将数据按key进行hash,然后根据key的hash值, 将key写入对应的磁盘文件之中。当然,写入磁盘文件时也是先写入内存缓冲,缓冲写满之后再溢写到磁盘文件的 。最后,同样会将所有临时磁盘文件都合并成一个磁盘文件,并创建一个单独的索引文件。

• 该过程的磁盘写机制其实跟未经优化的HashShuffleManager是一模一样的,因为都要创建数量惊人的磁盘文件, 只是在最后会做一个磁盘文件的合并而已。因此少量的最终磁盘文件,也让该机制相对未经优化的 HashShuffleManager来说,shuffle read的性能会更好。

而该机制与普通SortShuffleManager运行机制的不同在于:

第一,磁盘写机制不同;

第二,不会进行排序。也就是说,启用该机制的最大好处在于,shuffle write过程中,不需要进行数据的排序操作, 也就节省掉了这部分的性能开销。

总结:

SortShuffle也分为普通机制和bypass机制

普通机制在内存数据结构(默认为5M)完成排序,会产生2M个磁盘小文件。

而当shuffle map task数量小于spark.shuffle.sort.bypassMergeThreshold参数的值。或者算子不是聚合类的shuffle算子(比如reduceByKey)的时候会触发SortShuffle的bypass机制,SortShuffle的bypass机制不会进行排序,极大的提高了其性能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/688048.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

置信区间笔记1 模型性能的置信区间

目录 补充实验-TCASVM置信区间 成功运行代码 误差棒图 置信区间与泛化性的关系 置信区间的计算公式 分类精度的置信区间 F1的置信区间 误差棒图 show confidence intervals for the prediction accuracy 补充实验-TCASVM置信区间 AUC的置信区间参考: https://blog.c…

加密接口如何测试?

随着互联网技术的发展,服务安全性和数据安全性变的越来越重要,提供接口服务的系统往往会应用各种加密技术,保证接口的安全调用,如何应用工具来实现加密接口测试成为一项必要技能。在讲解如何用Jmeter实现接口安全性测试之前&#…

【论文阅读】AugGPT: Leveraging XXX for Text Data Augmentation(AugGPT:利用XXX进行文本数据增强)

文章目录 一.论文信息二.论文内容摘要2.相关工作2.1.数据增强 4.方法4.1.整体框架4.4.Baseline方法4.6.评价指标4.6.1.余弦相似度4.6.2.TransRate 6.总结和讨论 一.论文信息 论文题目: AugGPT: Leveraging XXX Transformer for Text Data Augmentation(…

RocketMQ --- 高级篇

一、高级功能 1.1、消息存储 分布式队列因为有高可靠性的要求,所以数据要进行持久化存储。 消息生成者发送消息MQ收到消息,将消息进行持久化,在存储中新增一条记录返回ACK给生产者MQ push 消息给对应的消费者,然后等待消费者返回…

HR谈薪之前,先要工资流水,礼貌吗?

hr谈薪前先要工资流水,这种做法礼貌吗?如果是你,你会给吗? 一部分网友认为可以不给,因为薪水是自己的隐私,跟求职无关,不需要告诉hr。 有人说,公司都双标,让你对工资保密…

LLM - 搭建 ProteinGPT 结合蛋白质结构知识的 ChatGPT 系统

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://blog.csdn.net/caroline_wendy/article/details/131403263 论文:ProteinChat: Towards Enabling ChatGPT-Like Capabilities on Protein 3D Structures 工程:ht…

高速电路设计系列分享-电源噪声分析

文章目录 概要整体架构流程技术名词解释技术细节小结 概要 提示:这里可以添加技术概要 例如: 当今许多应用都要求高速采样模数转换器(ADC)具有12位或以上的分辨率,以便用户能够进行更精确的系统测量。然而,更高分辨率…

高速电路设计系列分享-低频和高频接地

文章目录 概要整体架构流程技术名词解释技术细节小结 概要 提示:这里可以添加技术概要 例如: 在大多数电子系统中,降噪是一个重要设计问题。与功耗限制、环境温度变化、尺寸限制以及速度和精度要求一样.必须处理好无所不在的噪声因素&#…

【SQL】查询数据库每张表的数据及索引占用大小

【SQL】查询数据库每张表的数据及索引占用大小 SELECTa.*,CONCAT( a.总大小 / 1024000000, G ) 总大小G FROM(SELECTTABLE_SCHEMA,TABLE_NAME,sum( DATA_LENGTH ) 数据大小,sum( INDEX_LENGTH ) 索引大小,( sum( DATA_LENGTH ) sum( INDEX_LENGTH ) ) 总大小FROMinformation_s…

【Linux】如何在tty终端terminal上实现上下翻页?ubuntu\centos

一、问题背景 有时候,我们在tty终端执行一条命令,会产生很多输出文本,这些文本占满了整个屏幕还不止。 于是乎,我们没办法查看到上面的输出。 在图形界面中的终端,可以用shift Pageup或shift Pagedown来翻页。 …

两小时快速入门 TypeScript 基础(一)工作流、基本类型、高级类型

个人简介 👀个人主页: 前端杂货铺 🙋‍♂️学习方向: 主攻前端方向,也会涉及到服务端(Node.js 等) 📃个人状态: 2023届本科毕业生,已拿多个前端 offer&#x…

vscode实现本地代码自动同步到远程机器

在用vscode编码时经常会遇到代码在本地,实际代码编译运行在远端的服务器上,如果在本地修改了代码还需要用比较工具同步到远程服务器上,这样的开发模式非常费时费力,有时候还会漏代码,给开发带来了隐患。 以上的不变可以…

大类资产轮动策略

数量技术宅团队在CSDN学院推出了量化投资系列课程 欢迎有兴趣系统学习量化投资的同学,点击下方链接报名: 量化投资速成营(入门课程) Python股票量化投资 Python期货量化投资 Python数字货币量化投资 C语言CTP期货交易系统开…

Roop:显卡GPU版软件已就位,速度提升28倍!

我在本地的一台电脑行做了个简单的对比,同一个小视频,CPU要5分多钟,GPU只要12秒。而且,内存的需求量也大幅度降低了。 美队这个架子,给托尼用,也挺不错哦! 这次的版本,准确来说是GPU…

小程序中实现二维数组的展示

目录 1 定义变量2 外层循环3 内层循环总结 我们在小程序中有一类需求就是要显示二维数组,二维数组是指数组中的元素也是数组,比如我们以菜谱为例,菜谱有名称和用料,用料就又是一个数组,如果我们构造数据可以是这样 [ {…

纯干货:怎么样去满足客户需求,增强用户粘性?

无论是销售产品还是提供服务,最终目标是为客户提供他们想要和需要的东西。但随着竞争的加剧和客户期望的变化,了解这些需求变得越来越复杂。因此我们需要识别和满足他们可以产生重大影响的地方。 识别和了解客户需求的好处 想象一下,你在家乡…

详解volatile关键字、线程的可见性、有序性

0、引言 在juc多线程并发编程中,常常需要关注线程的“可见性”与“有序性”。本文将详细介绍这两部分内容,以及volatile关键字的使用。 阅读本文前需要一些jvm运行时内存、进程与线程、共享内存、锁等相关知识。 1、可见性 1.1 定义 定义&…

DOTA-Acrylamide,DOTA-DBCO,DOTA-MeTz,三者DOTA双功能螯合剂信息说明总结

今天小编分享DOTA螯合剂试剂:它们分别是DOTA-Acrylamide,DOTA-DBCO,DOTA-MeTz,今天整体分享一下相关的知识,一起看看吧。 (文章编辑来源于:西安凯新生物科技有限公司小编WMJ) 一、D…

【css】动画:行走的人

素材&#xff1a; 链接&#xff1a; https://img1.baidu.com/it/u3361754298,960828090&fm253&fmtauto&app138&fPNG?w1472&h325 代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8&quo…

熊哥保佑你 数据结构复习

构造哈夫曼树&#xff1a; 先带权值最小的&#xff0c;再找有关系的&#xff08;一般是相等或相近&#xff09;&#xff0c;没关系的放一边&#xff0c;最后将有关系的和没关系的组成一个哈夫曼树。 . 最小生成树&#xff1a; 顶点数&#xff1a;n 边数&#xff1a;n-1 kru…