首页 > 其他分享 >【SPARK-CORE】shuffle机制

【SPARK-CORE】shuffle机制

时间:2024-06-15 18:10:22浏览次数:19  
标签:CORE shuffle Map Reduce 任务 Shuffle SPARK 数据

本文主要介绍spark的shuffle机制

 

shuffle的产生

Spark 作业被分解为多个 Stage,每个 Stage 包含多个任务(Task)。在需要重新分区的数据操作时因为需要进行数据的交换因此会产生 Shuffle 边界,即两个 Stage 之间需要进行 Shuffle 操作。

 

shuffle的各个阶段

1、shuffle map阶段

  • 每个 Shuffle Map 任务会处理一个 RDD 分区的数据,并根据 Shuffle 操作(如 groupByKey)的键对数据进行分组。
  • 这些数据分组的结果被写入到中间存储(本地磁盘或内存),每个任务会为每个 Reduce 任务准备一份数据。

每个shuffle map任务写自己的数据到自己的一个环形缓冲区中当到达一定阈值的时候就进行溢写磁盘的操作,生成临时文件

2、数据序列化与写入

  • Shuffle Map 任务会将处理后的数据序列化,并写入到中间文件中(即临时存储)。
  • 每个 Shuffle Map 任务为每个 Reduce 任务创建一个分区文件。

3、shuffle reduce阶段

  • 每个 Shuffle Reduce 任务会从所有 Shuffle Map 任务中拉取(Fetch)属于自己的那部分数据,并对这些数据进行反序列化。
  • 然后,Shuffle Reduce 任务会对数据进行合并和处理(如 reduce 操作)。

4、最终,Shuffle Reduce 任务会将处理后的数据写入到输出 RDD 分区中,完成 Shuffle 过程。

shuffle中间文件的优化

1、hashshufflemanager存在的问题

M个shuffle map任务,R个shuffle reduce任务会产生M*R个中间临时文件。

 

标签:CORE,shuffle,Map,Reduce,任务,Shuffle,SPARK,数据
From: https://www.cnblogs.com/mark-blogs/p/18249587

相关文章

  • ASP.NET Core应用程序11:使用模型绑定
      模型绑定是使用从HTTP请求获得的数据值,创建操作方法和页面处理程序所需的对象的过程。本章描述模型绑定系统的工作方式;显示它如何绑定简单类型、复杂类型和集合;并演示如何控制流程,以指定请求的哪一部分提供应用程序所需的数据值。  本章介绍了模型绑定特性,展示了如何使......
  • 【SPARK-CORE】checkpoint机制
    本文主要介绍SPARKRDD的checkpoinnt机制 checkpoint机制介绍checkpoint是讲RDD保存到可靠的存储中的机制,主要目的是提高应用的容错能力和持久性。Checkpointing将数据从内存中转移到磁盘存储,使得在出现节点故障时,Spark可以从存储中恢复数据,而不需要重新计算所有的数据。这......
  • ASP.NET Core之使用OpenTelemetry的日志管理
    一、前言当前软件架构演变由单体架构=>分布式架构(SOA)=>微服务架构(mircoservice)=>云原生架构(cloudnative),所以架构的演变导致对系统日志、监控、链路等统称为观测性方案提出巨大的挑战。在单体架构时代,借助丰富的日志库基本满足对日志管理,但是面对分布式、微服务的架构盛行,......
  • Spark 面试题(十)
    1.简述Spark参数(性能)调优?Spark性能调优涉及多个方面,包括资源分配、任务并行度、内存管理、存储策略等。以下是一些关键的Spark性能调优参数:spark.executor.memory:设置Executor的内存大小。这是最关键的配置之一,需要根据集群的资源和作业的需求进行调整。spark.driver......
  • Spark 面试题(九)
    1.简述Spark的DAG以及它的生成过程?在Spark中,DAG(有向无环图)是描述作业中所有RDD转换操作依赖关系的图。DAG的生成过程是Spark作业调度的关键步骤之一。以下是对SparkDAG的简述以及它的生成过程:DAG的概念节点:DAG中的每个节点代表一个RDD。边:边表示RDD之间的依赖关系,可以......
  • CorelDRAW破解激活2024新版本序列号
    CorelDRAW破解2024最新版序列号激活码注册码,这可是个神奇的宝贝!......
  • 核心(Hutool-core)语言特性(二进码十进数-BCD)
    介绍BCD码(Binary-CodedDecimal)亦称二进码十进数或二-十进制代码,BCD码这种编码形式利用了四个位元来储存一个十进制的数码,使二进制和十进制之间的转换得以快捷的进行。这种编码技巧最常用于会计系统的设计里,因为会计制度经常需要对很长的数字串作准确的计算。相对于一般的浮点式......
  • 核心(Hutool-core)工具类(社会信用代码工具-CreditCodeUtil)
    介绍法人和其他组织统一社会信用代码制度,相当于让法人和其他组织拥有了一个全国统一的“身份证号”。规则如下:第一部分:登记管理部门代码1位(数字或大写英文字母)第二部分:机构类别代码1位(数字或大写英文字母)第三部分:登记管理机关行政区划码6位(数字)第四部分:主体标识码(......
  • 核心(Hutool-core)工具类(信息脱敏工具-DesensitizedUtil)
    介绍在数据处理或清洗中,可能涉及到很多隐私信息的脱敏工作,因此Hutool针对常用的信息封装了一些脱敏方法。现阶段支持的脱敏数据类型包括:用户id中文姓名身份证号座机号手机号地址电子邮件密码中国大陆车牌,包含普通车辆、新能源车辆银行卡整体来说,所谓脱敏就是隐藏掉信......
  • 核心(Hutool-core)工具类(字符编码工具-CharsetUtil)
    介绍CharsetUtil主要针对编码操作做了工具化封装,同时提供了一些常用编码常量。常量常量在需要编码的地方直接引用,可以很好的提高便利性。字符串形式ISO_8859_1UTF_8GBKCharset对象形式CHARSET_ISO_8859_1CHARSET_UTF_8CHARSET_GBK方法编码字符串转为Charset对象Char......