zoukankan      html  css  js  c++  java
  • 一次Spark应用程序参数优化案例

    并行度

    对于*ByKey等需要shuffle而生成的RDD,其Partition数量依如下顺序确定:1. 方法的第二个参数 > 2. spark.default.parallelism参数 > 3. 所有依赖的RDD中,Partition最多的RDD的Partition的数量。

    对于其他的RDD则其依赖于父RDD的分区个数。对于读取Hadoop文件的RDD,其默认的分区个数是HDFS块个数。同时textFile函数也接受参数,指定分区个数,但不能小于HDFS块个数——不使用HDFS块个数。

    优化内存

    当内存不足时,Spark应用程序运行时,会出现超时而导致任务失败。原因是内存不足,引起GC。而GC又引起通讯超时。其中的一种解决办法如下:

    1、减小用于cache的内存比例

    将spark.storage.memoryFraction参数改为(默认为0.6)。

    2、增加并行度

    加大spark.default.parallelism参数。

    以总数据大小为3.6G、只有两个NodeManager节点(三个中扣掉一个要跑Driver,每节点1vCPU,480M可用内存)为例。3.6G=(3600M/并行度100)*2 CPU核=72M内存。则每节点内存为:72M/2=36M内存。

    480M > 36M内存,所以足够(这还没有算上临时对象等其他内存)。

    常见配置

    spark-defaults.conf:
        spark.default.parallelism           100
        spark.storage.memoryFraction        0.2
        spark.executor.memory               480m
        spark.yarn.am.memory                400m
        #for yarn-clent mode
        spark.yarn.am.cores                 1
        #for yarn-cluter mode
        #spark.driver.cores                 1
    spark-env.sh:
        JAVA_OPTS=" -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps"
  • 相关阅读:
    loj#2333 「JOI 2017 Final」准高速电车
    loj#2332 「JOI 2017 Final」焚风现象
    loj#501 「LibreOJ β Round」ZQC 的树列
    loj#500 「LibreOJ β Round」ZQC 的拼图
    p2827 蚯蚓
    p5471 [NOI2019]弹跳
    p5304 [GXOI/GZOI2019]旅行者
    p2503 [HAOI2006]均分数据
    p4899 [IOI2018] werewolf 狼人
    loj#137 最小瓶颈路 加强版
  • 原文地址:https://www.cnblogs.com/seaspring/p/5679097.html
Copyright © 2011-2022 走看看