更新时间:2024-07-24 GMT+08:00

调整Spark日志级别

配置场景

在某些场景下,当任务已经启动后,用户想要修改日志级别以定位问题或者查看想要的信息。

用户可以在进程启动前,在进程的JVM参数中增加参数“-Dlog4j.configuration.watch=true”来打开动态设置日志级别的功能。进程启动后,就可以通过修改进程对应的log4j配置文件,来调整日志打印级别。

目前支持动态设置日志级别功能的有:Driver日志、Executor日志、AM日志、JobHistory日志、JDBCServer日志。

允许设置的日志级别是:FATAL,ERROR,WARN,INFO,DEBUG,TRACE和ALL。

配置描述

在进程对应的JVM参数配置项中增加以下参数。

表1 参数描述

参数

描述

默认值

-Dlog4j.configuration.watch

进程JVM参数,设置成“true”用于打开动态设置日志级别功能。

未配置,即为false。

Driver、Executor、AM进程的JVM参数如表2所示。在Spark客户端的配置文件“spark-defaults.conf”中进行配置。Driver、Executor、AM进程的日志级别在对应的JVM参数中的“-Dlog4j.configuration”参数指定的log4j配置文件中设置。

表2 进程的JVM参数1

参数

说明

默认日志级别

spark.driver.extraJavaOptions

Driver的JVM参数。

INFO

spark.executor.extraJavaOptions

Executor的JVM参数。

INFO

spark.yarn.am.extraJavaOptions

AM的JVM参数。

INFO

JobHistory Server和JDBCServer的JVM参数如表3所示。在服务端配置文件“ENV_VARS”中进行配置。JobHistory Server和JDBCServer的日志级别在服务端配置文件“log4j.properties”中设置。

表3 进程的JVM参数2

参数

说明

默认日志级别

GC_OPTS

JobHistory Server的JVM参数。

INFO

SPARK_SUBMIT_OPTS

JDBCServer的JVM参数。

INFO

示例:

为了动态修改Executor日志级别为DEBUG,在进程启动之前,修改“spark-defaults.conf”文件中的Executor的JVM参数“spark.executor.extraJavaOptions”,增加如下配置:

-Dlog4j.configuration.watch=true 

提交用户应用后,修改“spark.executor.extraJavaOptions”“-Dlog4j.configuration”参数指定的log4j日志配置文件(例如:“-Dlog4j.configuration=file:${BIGDATA_HOME}/FusionInsight_Spark2x_xxx/install/FusionInsight-Spark2x-*/spark/conf/log4j-executor.properties”)中的日志级别为DEBUG,如下所示:

log4j.rootCategory=DEBUG, sparklog

DEBUG级别生效会有一定的时延。