spark shuffle 补充概念

spark shuffle

我们在前面的文章说过,所谓shuffle,就是spark RDD的一种宽依赖关系,父RDD的数据会发送给多个子RDD

spark中Map和Reduce概念

在Shuffle过程中.提供数据的称之为Map端(Shuffle Write)接收数据的称之为Reduce端(Shuffle Read),在Spark的两个阶段中,总是前一个阶段产生一批Map提供数据,下一阶段产生一批Reduce接收数据
在这里插入图片描述

spark中提供了两类shufflemanager,分别是hashshufflemanager和sortshufflemanager

HashShuffleManager

数据按hash进行分组,下图中相同分组的数据颜色一致,相同分组的数据在reduce时通过网络发送到同一个地方
在这里插入图片描述

对同一个executor中的同一个分组但不同task产生的数据,task共享buffer缓冲区能减少网络io和写磁盘次数,提升性能

在这里插入图片描述

SortShuffleManager

SortShuffleManager的运行机制主要分为两种,一种普通运行机制,一种bypass运行机制

普通运行机制

内存数据写入磁盘后会汇聚到同一个文件中再发送给reduce节点,同时reduce节点任务通过索引文件确认该从整个文件中什么位置读取
在这里插入图片描述

bypass运行机制

bypassi运行机制的触发条件如下:
1)shuffle map task数量小于
spark.shuffle.sort.bypassMergeThres
hold=200参数的值。
2)不是聚合类的shuffle算子(比如
reduceByKey).
同普通机制基本类同,区别在于,写入磁盘临时文件的时候不会在内存中进行排序而是直接写,最终合并为一个task一个最终文件,所以和普通模式IDE区别在于:
第一,磁盘写机制不同;
第二,不会进行排序。
也就是说,启用该机制的最大好处在于shuffle write过程中,不需要进行数据的排序操作,也就节省掉了这部分的性能开销

SortShuffle与hashShuffle对比

1.SortShuffle对比HashShuffle可以减少很多的磁盘文件以节省网络IO的开销
2.SortShuffle主要是对磁盘文件进行合并来进行文件数量的减少,同时两类Shuffle都需要经过内存缓冲区溢写磁盘的场景.所以可以得知,尽管Spark是内存迭代计算框架,但是内存迭代主要在窄依赖中.在宽依赖(Shuffle)中磁盘交互还是一个无可避免的情况.
所以,我们要尽量减少Shuffle的出现,不要进行无意义的Shuffle计算.

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用Excel连接Azure DevOps自动退出的问题

Azure DevOps Server (原名TFS)是微软公司的软件开发管理平台,也是著名的软件开发过程管理工具;系统中记录了软件开发过程中的需求、问题、缺陷和迭代计划等各种软件开发工作项数据。 对于工作项数据的批量操作(例如新增和编辑),Excel是一个非…

springcloud基本使用五(Gateway服务网关)

为什么使用网关? 权限控制:网关作为微服务入口,需要校验用户是是否有请求资格,如果没有则进行拦截。 路由和负载均衡:一切请求都必须先经过gateway,但网关不处理业务,而是根据某种规则&#xff…

【Python面试题收录】Python的可变对象与不可变对象

一、可变对象与不可变对象的定义 在Python中,对象的可变性是指对象的内部状态(值)是否允许在对象创建后发生改变。根据这一特性,Python的数据类型可以分为两大类:可变对象(mutable objects)和不…

某音乐平台歌曲信息逆向之webpack扣取

逆向网址 aHR0cHM6Ly95LnFxLmNvbS8 逆向链接 aHR0cHM6Ly95LnFxLmNvbS9uL3J5cXEvc29uZ0RldGFpbC8wMDJkdzRndjFabWlHdA 逆向接口 aHR0cHM6Ly91Ni55LnFxLmNvbS9jZ2ktYmluL211c2ljcy5mY2c 逆向过程 请求方式:POST 逆向参数 sign zzbd8c72309rdslvlnjwk8pthj2lw462f12…

Linux系统---进程间通信与管道入门

顾得泉:个人主页 个人专栏:《Linux操作系统》 《C从入门到精通》 《LeedCode刷题》 键盘敲烂,年薪百万! 一、进程间通信 1.进程间通信的目的 1.数据传输:一个进程需要把他的数据传给另外一个进程。 2.资源共享&…

el-table实现表格内部横向拖拽效果

2024.4.2今天我学习了如何对el-table表格组件实现内部横向拖拽的效果,效果: 代码如下: 一、创建utils/底下文件 const crosswise_drag_table function (Vue){// 全局添加table左右拖动效果的指令Vue.directive(tableMove, {bind: function…

IMU参数辨识及标定

IMU参数辨识及标定 一、标定参数分析 标定的本质是参数辨识。首先明确哪些参数可辨识,其次弄清怎样辨识。 参数包括陀螺仪和加速度计各自的零偏、标度因数、安装误差。 IMU需要标定的参数主要是确定性误差和随机误差,确定性误差主要标定bias&#xff0…

Python 之 Flask 框架学习

毕业那会使用过这个轻量级的框架,最近再来回看一下,依赖相关的就不多说了,直接从例子开始。下面示例中的 html 模板,千万记得要放到 templates 目录下。 Flask基础示例 hello world from flask import Flask, jsonify, url_fora…

STM32H5 读取温度传感器校准值时进 HardFault 的原因分析

1.前言 有客户反馈,在使用 STM32H5 读取温度传感器校准值地址时,会进入 HardFault,而在其他系列芯片中读取这个参数时并没有此现象。在 NUCLEO-H563ZI 开发板上去复现此问题,发现只有开启 ICACHE 后才会复现,初步验证…

图像处理与视觉感知---期末复习重点(6)

文章目录 一、图像分割二、间断检测2.1 概述2.2 点检测2.3 线检测2.4 边缘检测 三、边缘连接3.1 概述3.2 Hough变换3.3 例子3.4 Hough变换的具体步骤3.5 Hough变换的法线表示形式3.6 Hough变换的扩展 四、阈值处理4.1 概述4.2 计算基本全局阈值算法4.3 自适应阈值 五、基于区域…

ElementUI 表格横向滚动条时滚动到指定位置

ElementUI 表格横向滚动条时滚动到指定位置 getColumnOffset(columnProp) {this.$nextTick(() > {const table this.$refs.tableRef.$refs.multipleTable;const columns table.columns;const column columns.find((col) > col.property columnProp);if (column) {// …

Flume学习笔记

视频地址:https://www.bilibili.com/video/BV1wf4y1G7EQ/ 定义 Flume是一个高可用的、高可靠的、分布式的海量日志采集、聚合和传输的系统。 Flume高最要的作用就是实时读取服务器本地磁盘的数据,将数据写入HDFS。 官网:https://flume.apache.org/releases/content/1.9.0/…

Python PDF页面设置 -- 旋转页面、调整页面顺序

在将纸质文档扫描成PDF电子文档时,有时可能会出现页面方向翻转或者页面顺序混乱的情况。为了确保更好地浏览和查看PDF文件,本文将分享一个使用Python来旋转PDF页面或者调整PDF页面顺序的解决方案。 目录 使用Python旋转PDF页面 使用Python调整PDF页面…

【Redis 知识储备】单机架构 -- 分布系统的演进(1)

单机架构 1. 概念2. 单机架构的优点3. 单机架构的问题4. 单机架构问题的解决思路 1. 概念 单机架构, 只有一台服务器, 这个服务器负责所有的工作 初期,我们需要利⽤我们精⼲的技术团队,快速将业务系统投⼊市场进⾏检验,并且可以迅速响应变化…

【攻防世界】warmup (代码审计)

进入题目环境,只有一个表情: ctrl u 查看源代码: 源代码提示我们访问 /source.php。访问结果如下: 我们进行代码审计,发现解题的关键点 include &_REQUEST[file]。但是题目使用了白名单进行了过滤。我们发现白名单…

Redis底层数据库之SDS

高速的存储介质:内存优秀的底层数据结构高效的IO模型高效的线程模型 1. 动态字符串SDS Redis中保存的Key是字符串,value往往是字符串或者字符串的集合。可见字符串是redis中最常用的一种数据结构。 C语言种字符串存在的一些问题: 获取字符…

web-AOP

AOP基础 AOP进阶 通知顺序和类型 切入点表达式 连接点

腾讯云(CVM)托管进行权限维持

前言 刚好看到一个师傅分享了一个阿里云ECS实战攻防,然后想到了同样利用腾讯云CVM的托管亦可实现在实战攻防中的权限维持。 简介 腾讯云自动化助手(TencentCloud Automation Tools,TAT)是一个原生运维部署工具,它可…

链表的极致——带头双向循环链表

​ 文章目录 双向带头循环链表简介:双向:带头:特点:链表带头节点的好处: 循环:特点:循环的好处: 双向带头循环链表的接口函数实现准备工作: 初始化链表(头结…

在flutter中添加video_player【视频播放插件】

添加插件依赖 dependencies:video_player: ^2.8.3插件的用途 在Flutter框架中,video_player 插件是一个专门用于播放视频的插件。它允许开发者在Flutter应用中嵌入视频播放器,并提供了一系列功能来控制和定制视频播放体验。这个插件对于需要在应用中展…