您的位置:首页 > 其它

Spark性能调优-总结分享

2018-03-27 14:39 381 查看

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
原文链接:https://blog.csdn.net/xgjianstart/article/details/76549236
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: