spark从入门到放弃二十七:Spark 性能优化(10)shuffle 性能优化

43 篇文章 1 订阅

文章地址:http://www.haha174.top/article/details/251220

1 consolidation

new SparkConf().set(“spark.shuffle.consolidateFiles”,”true”)
是否开启shuffle block file 的合并 默认false

这里写图片描述
没有开启consolidation 机制的时候,shuffle write 的性能是比较低下的 因为在shuffle map 的时候创建的磁盘文件太多了,导致shuffle write 要耗费大量的性能在磁盘文件的创建,以及在磁盘io 上,对于shuffle read 也是一样,每个shuffle task 可能都需要通过磁盘io 读取多个文件的数据。都只shuffle read 性能 可能也受到影响,
但是其实最主要的还是shuffle write 因为要写的磁盘文件的数量实在是太多了。
比如每个节点有100个shuffle map task 然后呢 总共有 有1000个 result task .所以每个节点上的磁盘文件的数量就是100*1000

这里写图片描述
开启了consolidation机制之后shuffle map 写磁盘的数量大大减少, 每个shuffle map task 10个cpu 总共1000个result task 那么单个节点的文件总数 10*1000
此外 result task 拉去的磁盘io 也变少了

2 reduce task 缓存

spark.reducer.maxSizeInFlight 默认48M
每次只能拉取指定缓存大小的数据量,拉取完聚合处理,然后再次拉取,所以如果你的内存够大的化可以适当加大。

3.map 端的bucket 缓存

saprk.shuffle.file.buffer map task 写磁盘缓存 默认32 k
map 端的bucket 缓存也可以适当增大这样的化 写入磁盘的次数就会减少。

4.拉取失败最大重试次数

spark.shuffle.io.maxRetries 默认3次

5.拉取失败重试间隔

spark.shuffle.io.retryWait 默认5秒

6.用于reduce 端聚合的内存比例

spark.shuffle.memoryFraction
默认0.2 超过比例就会溢出到磁盘上

欢迎关注,更多福利

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值