SparkShuffle

SparkShuffle

什么是shuffle

shuffle是分布式计算中不可缺少的一部分,也是计算性能消耗最严重的部分,
在spark中有些算子会触发shuffle进行分区数据的重新规划

spark中的shuffl的演变过程

-spark最早的shuffle 的处理方式是,是hashShuffleManager
-spark0.8的时候,对hashshufflemanager进行了优化
-spark1.2的时候出现了sortshufflemanager,代替了hashshufflemanager,成为了spark默认的shuffle处理方式
​
-可以指定使用哪种shuffle处理方式
    spark.shuffle.manager=hash | sort

未优化版本

采用未优化版本的shuffleManager,上游的task 会根据下游的task的数量生成对应的内存缓冲区,并生成临时文件,
加入有1000个上游的task,有100个下游的task会生成10w个临时文件
这种方式会产生量的临时文件,性能比较差,因此在spark0.8进行了优化

优化版本

在executor有一个cpucore的情况下,一个executor 中生成task 数量的buffer缓冲区和文件
如果上游task有1000个,下游的task有100个
如果executor有1个cpucore 的情况生成100个文件
如果executor有50个cpucore生成5000个文件,
优化后的版本,优化了生成文件的数量,效率得到了提升
在这里将cpu处理的过程称为一个shuffle-group

sortshufflemanager

为了处理那些在shuffle过程中需要进行的排序操作,sortshufflemanager一开始没有直接将数据从缓冲区送出落地到磁盘,而是先根据下游的reduce的个数,进行内存级别的分区,针对这多个分区进行排序,将排序之后的批量写入到内存缓冲区,
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值