• spark 性能优化


     1、内存

    spark.storage.memoryFraction:很明显,是指spark缓存的大小,默认比例0.6

    spark.shuffle.memoryFraction:管理executor中RDD和运行任务时的用于对象创建内存比例,默认0.2

    关于这两个参数的设置,常见的一个场景就是操作关系数据库

    spark 可以通过jdbc操作关系数据库,但是若是没有分散数据的依据,则将所有数据都读到driver节点上时,这时,强烈建议先看一下表的数据量和集群中对spark的内存设置参数

    假设 executor memory 大小设置为2G,也就是说,spark.shuffle.memoryFraction可用内存为2G*0.2=400M,假设5W条数据大小为1M,也就是说可以读取400*50W=2000W条

    当你在单节点上读取数据超过2000W而不能及时处理时,就有极大的可能oom

    内存设置

    spark.shuffle.memoryFraction 0.4  #适当调高

    spark.storage.memoryFraction 0.4 #适当调低

    2、开启外排序

    spark.sql.planner.externalSort true

    3、修改序列化工具

    spark.serializer                 org.apache.spark.serializer.KryoSerializer

    4、限制应用申请内核数

    spark.cores.max 15

    5、并行数

    spark.default.parallelism 90

    6、加入第三方常用类库

    spark.executor.extraClassPath /opt/spark/current/lib/sqljdbc41.jar:/opt/spark/current/lib/postgresql-9.4-1202-jdbc41.jar:spark-cassandra-connector-full.jar

    spark.driver.extraClassPath /opt/spark/current/lib/sqljdbc41.jar:/opt/spark/current/lib/postgresql-9.4-1202-jdbc41.jar:spark-cassandra-connector-full.jar

  • 相关阅读:
    有关类成员变量和局部成员变量初始值设置问题
    Redis在windows下安装与配置
    java内存区域-方法区
    Java中的反射机制(一)
    (转)Spring实现IoC的多种方式
    UUID
    Python os.path
    Leetcode 215、数组中第k个最大的元素
    树的非递归遍历
    About MySQL
  • 原文地址:https://www.cnblogs.com/piaolingzxh/p/5428541.html
Copyright © 2020-2023  润新知