• 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 并发度 200 800
    spark.executor.overhead.memory executor堆外内存 512m 1.5g
    spark.executor.memory executor堆内存 1g 9g
    spark.executor.cores executor拥有的core数 1 3
    spark.locality.wait.process 进程内等待时间 3 3
    spark.locality.wait.node 节点内等待时间 3 8
    spark.locality.wait.rack 机架内等待时间 3 5
    spark.rpc.askTimeout rpc超时时间 10 1000
    spark.sql.autoBroadcastJoinThreshold 小表需要broadcast的大小阈值 10485760 33554432
    spark.sql.hive.convertCTAS 创建表是否使用默认格式 false true
    spark.sql.sources.default 默认数据源格式 parquet orc
    spark.sql.files.openCostInBytes 小文件合并阈值 4194304 6291456
    spark.sql.orc.filterPushdown orc格式表是否谓词下推 false true
    spark.shuffle.sort.bypassMergeThreshold shuffle read task阈值,小于该值则shuffle write过程不进行排序 200 600
    spark.shuffle.io.retryWait 每次重试拉取数据的等待间隔 5 30
    spark.shuffle.io.maxRetries 拉取数据重试次数 3 10
  • 相关阅读:
    PE文件解析器的编写(二)——PE文件头的解析
    PE解析器的编写(一)——总体说明
    PE文件详解(九)
    PE文件详解(八)
    06_建造者模式
    05_模板方法模式
    04_抽象工厂模式
    03_简单工厂模式(静态工厂模式)
    02_工厂方法模式
    01_单例模式
  • 原文地址:https://www.cnblogs.com/huanghanyu/p/12841605.html
Copyright © 2020-2023  润新知