• spark性能调优02-JVM调优


    1、降低cache操作的内存占比

      1.1 为什么要降低cache操作的内存占比

        spark的堆内存分别两部分,一部分用来给Rdd的缓存进行使用,另一部分供spark算子函数运行使用,存放函数中的对象

        默认情况下,供Rdd缓存使用的占0.6,但是,有些时候,不需要那么多的缓存,反而函数计算需要更多的内存,这样导致频繁的minor gc和full gc,导致性能降低。

      1.2 如何调节

        根据spark作业的yarn界面,如果有频繁的gc,就需要调节 

    //调节cache操作的内存占比
    conf.set("spark.storage.memoryFraction", "0.4");

    2、调节executor的堆外内存

      2.1 什么情况下进行调节

        当spark作业中,是不是的报错,shuffle file cannot find,executro、task lost,out of memory等,可能是堆外内存不足,导致executor挂掉,task拉取该executor的数据是无法获取到,导致以上错误,甚至spark作业崩溃。

      2.2 如何调节

        在spark作业的提交脚本中,修改spark.yarn.executor.memoryOverhead参数(默认为300多M)

    /usr/local/spark/bin/spark-submit 
    --class com.ibeifeng.sparkstudy.WordCount 
    --num-executors 80 
    --driver-memory 6g 
    --executor-memory 6g 
    --executor-cores 3 
    --master yarn-cluster 
    --queue root.default 
    --conf spark.yarn.executor.memoryOverhead=2048         调节堆外内存
    --conf spark.core.connection.ack.wait.timeout=300        调节连接时间
    /usr/local/spark/spark.jar 

    3、调节连接等待时间

      3.1 什么情况下需要调节

        当一个executor的blockManager需要从其他的executor的blockManager中拉取数据,但是目标executor正处在gc阶段,此时源executor会进入等待连接状态(默认60s),如果多次拉取失败则会报   一串filed id  uuid(dsfsss-12323-sdsdsd-wewe) not found ,file lost,甚至spark作用直接崩溃。

      3.2 如何调节

        在spark作业的提交脚本中,修改conf spark.core.connection.ack.wait.timeout参数(默认为60s)

  • 相关阅读:
    SpringBoot集成JWT
    MongoDB学习入门
    Docker入门笔记
    商品分类(递归子目录)接口开发笔记
    深入理解java虚拟机
    -XX:+HeapDumpOnOutOfMemoryError
    使用kettle报Invalid byte 1 of 1-byte UTF-8 sequence异常
    kettle学习笔记(四)——kettle输入步骤
    eclipse maven项目,如何导出使用的依赖jar包
    kettle学习笔记(二)——kettle基本使用
  • 原文地址:https://www.cnblogs.com/lifeone/p/6434356.html
Copyright © 2020-2023  润新知