Spark性能调优-总结分享

1、Spark调优背景

目前Zeppelin已经上线一段时间,Spark作为底层SQL执行引擎,需要进行整体性能调优,来提高SQL查询效率。本文主要给出调优的结论,因为涉及参数很多,故没有很细粒度调优,但整体调优方向是可以得出的。

环境:服务器600+,spark 2.0.2,Hadoop 2.6.0

2、调优结果

调优随机选取线上9条SQL,表横轴是调优测试项目,测试在集群空闲情况下进行,后一个的测试都是叠加前面测试参数。从数据可参数经过调优,理想环境下性能可提高50%到300%

3、 下面为调优分享PPT

1)一图概览

这里写图片描述

2) Spark集群优化——数据本地性

这里写图片描述

3)Spark集群优化——存储格式选择

这里写图片描述

4)Spark参数优化——计算资源

这里写图片描述

5) Spark参数优化——并行度

这里写图片描述

6)Spark参数优化——offheap内存

这里写图片描述

7)Spark参数优化——大小表join

这里写图片描述

8)Spark参数优化——其他

这里写图片描述

9) Spark参数优化——shuffle过程

这里写图片描述

10)Spark代码优化——RDD复用

这里写图片描述

11)Spark代码优化——选择合适算子

这里写图片描述

12) Spark代码优化——shuffle算子并行度调优

这里写图片描述

13)Spark代码优化——数据倾斜

这里写图片描述

14)Spark代码优化——优化数据结构

这里写图片描述

15)Spark代码优化——使用DateSet API

这里写图片描述

16)Spark代码优化——使用DateSet API

这里写图片描述

17) 目前Spark的瓶颈——内存

这里写图片描述

18) 目前Spark的瓶颈——内存

这里写图片描述

3、总结

调优参数虽名目多样,但最终目的是提高CPU利用率,降低带宽IO,提高缓存命中率,减少数据落盘。 
不同数据量的最优参数都不相同,调优目的是让参数适应数据的量级以最大程度利用资源,经调优发现并不是所有参数有效,有的参数的效果也不明显,最后折中推荐如下调优参数以适应绝大多数SQL情况,个别SQL需要用户单独调参优化。(以下参数主要用于Spark Thriftserver,仅供参考)

参数含义默认值调优值
spark.sql.shuffle.partitions并发度200800
spark.executor.overhead.memoryexecutor堆外内存512m1.5g
spark.executor.memoryexecutor堆内存1g9g
spark.executor.coresexecutor拥有的core数13
spark.locality.wait.process进程内等待时间33
spark.locality.wait.node节点内等待时间38
spark.locality.wait.rack机架内等待时间35
spark.rpc.askTimeoutrpc超时时间101000
spark.sql.autoBroadcastJoinThreshold小表需要broadcast的大小阈值1048576033554432
spark.sql.hive.convertCTAS创建表是否使用默认格式falsetrue
spark.sql.sources.default默认数据源格式parquetorc
spark.sql.files.openCostInBytes小文件合并阈值41943046291456
spark.sql.orc.filterPushdownorc格式表是否谓词下推falsetrue
spark.shuffle.sort.bypassMergeThresholdshuffle read task阈值,小于该值则shuffle write过程不进行排序200600
spark.shuffle.io.retryWait每次重试拉取数据的等待间隔530
spark.shuffle.io.maxRetries拉取数据重试次数310
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值