Spark性能优化第六季-Shuffle性能调优

一:Shuffle性能调优
1、Shuffle output file lost问题,导致其发生的主要原因是GC问题。
分析:如果GC尤其是Full GC发生,通常会导致线程停止工作,这时,下一个Stage的Task在默认情况下就会通过尝试重试来获取数据,一般重试3次,每次重试时间为5s,超时则出现Shuffle output file lost问题,进而导致Task重试,甚至导致Stage重试,最严重的会导致App失败。
解决办法:采用高效的内存数据结构和序列化机制、JVM调优来减少Full GC的出现。
2、在Shuffle的时候,Reducer端获取数据会有一个指定大小的缓存空间,缓存太小,会导致数据spill到都特好,影响效率。如果内存足够大,可以适当增加缓存空间,调整spark.reducer.maxSizeInFlight参数,默认为48M;
3、在ShuffleMapTask端通常也会增大Map任务的写磁盘的缓存参数spark.shuffle.file.buffer,默认情况下为32K,可以根据实际情况调整;
4、调整获取Shuffle数据的重试次数,默认是3次,通常建议增大重试次数
调整获取Shuffle中读取数据的重试时间间隔spark.shuffle.io.retryWait,默认为5s,强烈建议提高该时间;
5、在reducer端做Aggregation的时候,默认是20%的内存用来做Aggregation,如果超出了这个大小就会溢出到磁盘盘上,建议调大百分比来提高性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值