Spark的shuffle的机制

发展史:
        先有 HashShuffle --> SortShuffle --> 钨丝计划(优化阶段) --> 钨丝计划合并到SortShuffle ---> 删除HashShuffle统一合并到SortShuffle(2.0版本以后)
Hashshuffle:

优化前:  

        上游的RDD的每个分片都会产生和下游分区数量相等的文件的数量, 每个文件对应下游的一个分区的数据, 这样导致产生大量的分区的文件, 对IO影响也是非常大的 最终影响效率


优化后:

        把原有由上游的每一个RDD生成与下游等同的的分区数量 转换为 由每一个executor来生成与下游等同的分区的数量, 从而减少的分区文件数量的产生,从而降低了IO, 提升了效率


SortShuffle的机制: 两种机制 普通机制 和 bypass机制


普通机制:

将处理的数据先写入到内存中, 当内存中数据达到一定的阈值后, 就会触发溢写, 将数据溢写到磁盘上,在溢写的时候会对数据进行分区操作, 以及排序操作, 形成的文件分好区排好序的数据, 溢写完成后, 还会将多个溢写的文件的数据合并为最终的大的文件数据, 同时这个文件数据还会携带有一个索引文件, 用于后续加载读取文件中数据


bypass机制:

比普通机制少了排序的操作, 所以在某些情况下bypass的机制执行效率可能会高于普通机制, 毕竟干的活少了
        使用条件的:
                1- 要求RDD的分区数量不能超过200个
                2- 要求上游的RDD不允许进行提前聚合的操作(满足两个特性,系统自动采用bypass)

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值