`
bit1129
  • 浏览: 1070637 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【Spark四十八】Spark Shuffle第二部分:Spark Shuffle概述

 
阅读更多

Spark Shuffle概述

 

1. Spark 提供了两种Shuffle方式 hash-based和sort based。可以通过spark.shuffle.manager参数指定。在Spark1.2中,将shuffle的默认实现设置为了sort based

对于hash based shuffle,

  • Spark使用类似HashMap的数据结构来对 shuffle 来的数据进行 aggregate(相同的K,通过Map来aggregate)
  • 不会对数据进行提前排序。如果用户需要经过排序的数据,那么需要自己调用类似 sortByKey() 的操作

对于sort based shuffle

  • sort based shuffle会对数据进行排序

对于hash based shuffle和sort based shuffle,除了是否排序上的差异之外,还有就是map端产生的文件个数。

hash based shuffle的主要问题就是产生的文件数太多。

 

2. 在 Spark 中,没有像Hadoop Shuffle那样明确的阶段,只有不同的 stage 和一系列的 transformation(),所以 spill, merge, aggregate 等操作需要蕴含在 transformation() 中。

 

3. Spark Shuffle可以分为两个阶段,Shuffle Write和Shuffle Read。map 端划分数据、持久化数据的过程称为 shuffle write,而将 reducer 读入数据、aggregate 数据的过程称为 shuffle read

 

4. Shuffle Write的任务

4.1 在ShuffleMapTask中对finalRDD产出的数据进行写操作。写操作会写到磁盘(而不是存放到内存中),一方面节省内存空间,另一方面也是为了容错。这就解释了相对于内存而言,很大量的数据做shuffle的时候,不会出现内存不够的情况。

4.2 每个Partition处理完(即ShuffleMapTask执行完),需要告知MapOutputTrackerMaster它产出的数据存放在那里,以供Reducer消费。

 

4.3 不同的RDD算子,比如reduceByKey,会使用Map端的combine操作,将数据进行提前combine;而有些算子,如groupByKey,则不使用Map的combine操作。

4.4 对于hash based shuffle,shuffle产生的分区数据不排序,而对于sort based shuffle则会对分区数据进行排序

 

5. Shuffle Read的任务

5.1从MapOutputTrackerMaster上获取属于它处理的Map输出的数据,这里可能涉及fetch remote

5.2 获取到所有的Map产出的数据后,会做一个总aggregate?

 



 

 

 

分享到:
评论

相关推荐

    spark-2.2.0-yarn-shuffle.jar

    spark-2.2.0-yarn-shuffle.jar

    Spark的shuffle调优

    spark.shuffle.blockTransferService netty shuffle过程中,传输数据的方式,两种选项,netty或nio,spark 1.2开始,默认就是netty,比较简单而且性能较高,spark 1.5开始nio就是过期的了,而且spark 1.6中会去除掉 ...

    spark-1.6.1-yarn-shuffle.jar

    spark-1.6.1-yarn-shuffle.jar 下载。spark-1.6.1-yarn-shuffle.jar 下载。spark-1.6.1-yarn-shuffle.jar 下载。

    SparkShuffle.xmind

    SparkShuffle思维导图,xmind

    Spark 的两种核心 Shuffle 详解.pdf

    Spark Shuffle 分为两种:一种是基于 Hash 的 Shuffle;另一种是基于 Sort 的 Shuffle。

    spark-ExternalShuffleService配置使用及性能提升

    Spark ExternalShuffleService 配置使用及性能提升 Spark ExternalShuffleService 是一个长期存在于 NodeManager 进程中的辅助服务,旨在提升 Spark 系统中 Shuffle 计算的性能。该服务可以减少 Executor 的压力,...

    【Spark内核篇04】SparkShuffle解析1

    Spark Shuffle是Apache Spark中处理大规模数据并行运算的关键步骤,它是数据在不同节点间重新分布的过程,用于确保数据在执行shuffle操作(如reduceByKey、join等)时能够正确地分发到合适的executor或reducer。...

    spark shuffle原理

    Spark Shuffle是大数据处理框架Apache Spark中的关键组成部分,它在数据处理流程中扮演着至关重要的角色,连接了Map和Reduce操作,决定了数据如何在集群中重新分布。 Shuffle过程涉及到数据的分区、排序和网络传输,...

    Spark-shuffle机制.pdf

    #### 二、Spark Shuffle与Hadoop MapReduce Shuffle比较 1. **Hadoop MapReduce Shuffle流程** - 在Map阶段,每个maptask都有一个内存缓冲区,默认大小为100MB,用于存储map任务的输出结果。 - 当缓冲区接近满时...

    Spark-Core学习知识笔记整理

    第二章 Spark开发环境搭建 8 1 Spark运行模式 8 2 Spark环境搭建 8 2.1Scala的安装 8 2.2Spark的单节点配置 9 2.3Spark-Standalone集群配置 9 2.4Spark-on-Yarn模式配置 12 2.5Spark-on-Mesos模式配置 13 2.6Hive-on...

    spark-shuffle重要类和方法介绍

    Spark Shuffle 重要类和方法介绍 Spark Shuffle 是 Spark 框架中的一种数据处理机制,用于处理大规模数据。Spark Shuffle 中有多种重要类和方法,下面将对这些类和方法进行详细介绍。 ShuffledRDD ShuffledRDD 是...

    spark-network-shuffle_2.11-2.1.3-SNAPSHOT.jar

    spark-network-shuffle_2.11-2.1.3-SNAPSHOT.jar

    适配CDH6.3.2的Spark3.2.2

    Spark3.2.2是Apache Spark的一个重要版本,它提供了许多新特性和性能优化,而适配CDH6.3.2则意味着该版本的Spark已经经过了与Cloudera Data Hub (CDH) 6.3.2的兼容性验证。CDH是一个流行的Hadoop发行版,包含了...

    【Spark调优篇03】Spark之Shuffle调优1

    在Spark作业中,Shuffle是一个至关重要的操作,它涉及到数据的重新分布,通常在join、groupByKey、reduceByKey等操作中出现。然而,不当的Shuffle管理可能导致性能瓶颈,因此,Shuffle调优是提高Spark应用程序性能的...

    spark笔记整理文档

    1. Spark概述: Spark最初由加州大学伯克利分校AMPLab开发,其设计理念是提供一个快速、通用且可扩展的大数据处理系统。与Hadoop MapReduce相比,Spark通过内存计算显著提升了迭代算法的执行效率,同时支持多种数据...

    spark shuffle简介

    2. **Spark 1.1.0**:引入了文件合并机制(file consolidation),即Hash-based Shuffle中的BlockManager开始合并输出文件,减少了磁盘I/O次数。但这个特性默认是关闭的,需要用户手动配置启用。 3. **Spark 1.4.0*...

    ApacheSpark设计与实现.pdf+ApacheSpark源码剖析.pdf+Spark原著中文版.pdf

    1. **Spark概述**:Spark的诞生背景,其与Hadoop MapReduce的对比,以及Spark的主要优势。 2. **RDD概念**:RDD的定义,其不可变性和分区特性,以及转换和行动操作的原理。 3. **Spark架构**:Driver、Executor、...

    spark考试练习题含答案.rar

    2. **Shuffle操作优化**:合理设置分区策略,减少网络传输和磁盘I/O。 3. **Executor配置**:调整executor的数量、内存大小和CPU核心数,平衡资源利用率和任务并发度。 六、Spark的其他高级特性 1. **Spark MLlib...

    Spark的Shuffle总结分析

    1.1 shuffle概述 Shuffle就是对数据进行重组,由于分布式计算的特性和要求,在实现细节上更加繁琐和复杂。 在MapReduce框架,Shuffle是连接Map和Reduce之间的桥梁,Map阶段通过shuffle读取数据并输出到对应的Reduce...

    Spark Shuffle优化-参数调优1

    Spark Shuffle 优化 - 参数调优 1 Spark 是一个基于内存的分布式计算框架,它的核心是shuffle操作。Shuffle 操作是 Spark 中最耗时的操作之一,而 shuffle 优化是Spark 优化的关键。 本文将对 Spark Shuffle 优化...

Global site tag (gtag.js) - Google Analytics