Spark学习——排序Shuffle

栏目: 服务器 · 发布时间: 6年前

内容简介:我在以我的理解简单的概括下,如有不对,希望大家及时斧正:

我在以我的理解简单的概括下,如有不对,希望大家及时斧正:

  • Hash Shuffle 是Spark 1.2之前的默认Shuffle实现,并在Spark 2.0版本中被移除。HashShuffle有个巨大的缺点,Shuffle前在磁盘上会产生海量的小文件,此时会产生大量耗时低效的 IO 操作
  • Consolidated Hash Shuffle 是Hash Shuffle的优化版,会只产生Cores数量 x Reduce端数量的小文件。
  • Sort-Based Shuffle 目前默认的Shuffle实现,Sorted-Based Shuffle 会把Mapper 中每个ShuffleMapTask 所有的输出数据Data 只写到一个文件中。它会产生一个 Data 文件和一个 Index 文件,其中 Data 文件是存储当前 Task 的 Shuffle 输出的, 而 Index 文件则存储了 Data 文件中的数据通过 Partitioner 的分类信息,此时下一个阶段的 Stage 中的 Task 就是根据这个 Index 文件获取自己所需要抓取的上一个 Stage 中 ShuffleMapTask 所产生的数据; 默认情况下的 Sort-Based Shuffle 是会在溢写磁盘前,先根据key进行排序
  • bypass模式的Sort-Based Shuffle 。spark.shuffle.sort.bypassMergeThreshold 默认值为200 ,如果shuffle map task的数量小于这个阀值200,且不是聚合类的shuffle算子(比如reduceByKey),则不会进行排序。 该机制与sortshuffle的普通机制相比,在map task不多的情况下,首先写的机制是不同,其次不会进行排序。这样就可以节约一部分性能开销。
  • Tungsten-sort Based Shuffle :引入新的内存管理模型Page。 个人理解是只对类似于指针或者index的二进制数据进行排序,所以会比Sort-Based Shuffle的针对java objects的 排序 更快。 当且仅当下面条件都满足时,才会使用新的Shuffle方式:
    • Shuffle dependency 不能带有aggregation 或者输出需要排序
    • Shuffle 的序列化器需要是 KryoSerializer 或者 Spark SQL's 自定义的一些序列化方式.
    • Shuffle 文件的数量不能大于 16777216
    • 序列化时,单条记录不能大于 128 MB

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

黑客攻防技术宝典(第2版)

黑客攻防技术宝典(第2版)

[英] Dafydd Stuttard、[英] Marcus Pinto / 石华耀、傅志红 / 人民邮电出版社 / 2012-6-26 / 99.00元

内容简介: Web应用无处不在,安全隐患如影随形。承载着丰富功能与用途的Web应用程序中布满了各种漏洞,攻击者能够利用这些漏洞盗取用户资料,实施诈骗,破坏其他系统等。近年来,一些公司的网络系统频频遭受攻击,导致用户信息泄露,造成不良影响。因此,如何确保Web应用程序的安全,已成为摆在人们眼前亟待解决的问题。 本书是Web安全领域专家的经验结晶,系统阐述了如何针对Web应用程序展开攻击与......一起来看看 《黑客攻防技术宝典(第2版)》 这本书的介绍吧!

SHA 加密
SHA 加密

SHA 加密工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具