spark log4j日志文件动态参数读取

需要在log4j xml文件中设置动态参数,并支持spark任务在集群模式下,动态参数读取正常;

1.log4j配置文件 log4j2.xml

bash 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="info" name="Log-Appender-Config" >
    <Properties>
        <Property name="logServerHost">${sys:logServer}</Property>
        <Property name="logServerPort">${sys:logServerPort}</Property>
    </Properties>
    <Appenders>
        <Socket name="Socket" host="${logServerHost}" port="${logServerPort}" >
            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5p [%-t] - %m%n"/>
            <ThresholdFilter level="info" />
        </Socket>
        <Async name="Async">
            <AppenderRef ref="Socket"/>
        </Async>
        
        <Console name="stdout" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5p [%-7t] %F:%L - %m%n"/>
            <ThresholdFilter level="info" />
        </Console>

    </Appenders>
    <Loggers>
        <Logger name="org.apache.spark" level="info" additivity="false">
            <AppenderRef ref="Socket"/>
        </Logger>
        <Root level="info">
            <AppenderRef ref="stdout"/>
        </Root>
    </Loggers>
</Configuration>

spark 配置log4j2.xml,并设置了两个动态参数,logServer和logServerPort;

spark提交任务后driver和executer均需要获取上述参数初始化日志配置;

2.driver和executer获取参数方式

bash 复制代码
--conf "spark.driver.extraJavaOptions=-DlogServer=127.0.0.1 -DlogServerPort=60201" 

--conf "spark.executor.extraJavaOptions=-DlogServer=127.0.0.1 -DlogServerPort=60201"

spark提交任务时设定动态参数值,给driver和executer设置额外jvm参数;

注意:

参数key命名不要以spark*开头,会被spark认为是内部变量, 在Spark中,spark.executor.extraJavaOptions是用来为Executor进程设置额外的JVM选项的,但不包括Spark的内部配置选项;

错误示例如下:

Caused by: java.lang.Exception: spark.executor.extraJavaOptions is not allowed to set Spark options (was '-Dspark.log.server=127.0.0.1 -Dspark.log.server.port=60201'). Set them directly on a SparkConf or in a properties file when using ./bin/spark-submit.

将上述key名spark.log.server和spark.log.server.port修改为非spark开头即可;

参考:

https://www.cnblogs.com/yanhuahayi/p/14297615.html

Log4j2.xml中动态读取配置_log4j2 动态属性读取-CSDN博客

相关推荐
Lansonli2 天前
大数据Spark(六十七):Transformation转换算子distinct和mapValues
大数据·分布式·spark
weixin_525936332 天前
金融大数据处理与分析
hadoop·python·hdfs·金融·数据分析·spark·matplotlib
geilip3 天前
知识体系_scala_利用scala和spark构建数据应用
开发语言·spark·scala
孟意昶3 天前
Spark专题-第三部分:性能监控与实战优化(3)-数据倾斜优化
大数据·分布式·sql·spark
Lansonli3 天前
大数据Spark(六十六):Transformation转换算子sample、sortBy和sortByKey
大数据·分布式·spark
杨小熊的笔记3 天前
final字段单元测试
单元测试·log4j
IT毕设梦工厂4 天前
大数据毕业设计选题推荐-基于大数据的人口普查收入数据分析与可视化系统-Hadoop-Spark-数据可视化-BigData
大数据·hadoop·数据分析·spark·毕业设计·源码·bigdata
计算机源码社4 天前
基于Hadoop的车辆二氧化碳排放量分析与可视化系统|基于Spark的车辆排放量实时监控与预测系统|基于数据挖掘的汽车排放源识别与减排策略系统
大数据·hadoop·机器学习·数据挖掘·spark·毕业设计·课程设计
励志成为糕手4 天前
Spark Shuffle:分布式计算的数据重分布艺术
大数据·分布式·spark·性能调优·数据倾斜
DashingGuy5 天前
Spark的Broadcast Join以及其它的Join策略
大数据·spark