升级 spark 2.4问题:Spark Streaming日志级别设置,最小堆内存设置

一、内存问题

    1、旧集群

            spark 1.6.1

            jdk 1.7 或 1.8

            jvm 堆内存分配,直接分配的为driver申请的内存(最大、最小堆内存相等)

    2、新集群

            spark 2.4.1

            jdk 1.8

            jvm 堆内存分配,刚开始分比较小的内存,当内存不够时,增加内存(主要是老年代内存),新生代内存也有增长,但是比较小(280M-556M),

    问题分析:

    查看spark 源码:org.apache.spark.launcher.Main发现如下问题:

   Spark 2.4 分配的jvm 堆的大小时,未分配

    Spark 2.3 分配的jvm 堆的大小时,只分配cmd.add("-Xmx" + memory);未分配最小堆内存

    Spark 1.6 分配的jvm 堆的大小时,cmd.add("-Xmx" + memory);cmd.add("-Xms" + memory);

    问题解决:2.3

            1、添加配置:--conf spark.driver.extraJavaOptions="-Xms55G” \

            2、修改spark-class的cmd构建出的最小堆内存:CMD=("${CMD[@]}" "-Xms55G"

while IFS= read -d '' -r ARG; do
# echo "*****$ARG*****"
 # CMD+=("$ARG")
  if [ "$ARG" = "-cp" ]; then
   CMD=("${CMD[@]}" "-Xms55G")
   echo ${CMD[@]}
  fi
  CMD+=("$ARG")
done < <(build_command "$@")

问题解决:2.4

--conf spark.driver.extraJavaOptions="-Xms32G” \

--conf spark.driver.extraJavaOptions="-Xmx128G” \

二、日志级别设置

        1、spark 1.6.1-日志级别设置

                Logger.getLogger("org").setLevel(Level.WARN)

        2、spark 2.4.1-日志级别设置

                a、步骤1的设置,只在driver端生效,executor端无效,默认日志级别为INFO

                b、设置executor端日志级别为WARN

                    1)从 $SPARK_HOME/conf copy  log4j.properties.template 到指定目录,并修改名称为 log4j.properties,这里的指定目录为当前应用程序jar包所在目录下的conf文件夹

                    2)添加如下配置信息
 

--conf spark.executor.extraJavaOptions="-Dlog4j.configuration=log4j.properties" \
 
--files conf/metrics.properties,conf/log4j.properties \

第二种方式:

1、屏蔽系统日志

/请注意是apache.log4j不是org.slf4j
import org.apache.log4j.{Level, Logger}
 
 
// 屏蔽不必要的日志 ,在终端上显示需要的日志    
Logger.getLogger("org.apache.spark").setLevel(Level.OFF)
Logger.getLogger("org.eclipse.jetty.server").setLevel(Level.OFF)
Logger.getLogger("org.apache.kafka.clients.consumer").setLevel(Level.OFF)
2、屏蔽 sparkContext 的日志

sparkContext.setLogLevel("WARN")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值