zoukankan      html  css  js  c++  java
  • 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)

  • 相关阅读:
    《Effective Java》读书笔记
    《Effective Java》读书笔记
    《Effective Java》读书笔记
    使用 @Log4j2 log.error() 打印异常日志
    获取min-max之间的随机数
    跨域问题(CORS / Access-Control-Allow-Origin)
    SnowFlakeId 分布式雪花id算法
    订单入库后异步推送
    查看git HEAD
    Java Http POST/GET 情求
  • 原文地址:https://www.cnblogs.com/lifeone/p/6434356.html
Copyright © 2011-2022 走看看