apache-spark - 如何配置 spark 和 log4j 以在 yarn 集群模式下登录本地文件系统
问题描述
我想将 spark 应用程序创建的日志消息收集到本地文件系统上的文件中。当我在客户端模式下运行应用程序时,我能够实现这一点,但是在集群模式下运行时我发现了困难。
我对 log4j 的配置:
# Root logger option
log4j.rootLogger=ERROR, stdout
# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p: %c %m%n
#Direct log messages to a file
log4j.logger.com.bosch.bidos=INFO, file
log4j.additivity.com.bosch.bidos=false
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=${user.home}/test.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %-5p: %c: %m%n
这是我的火花提交:
spark2-submit \
--name test \
--master yarn \
--deploy-mode cluster \
--class Main \
--files path/to/test_log4j.properties \
--conf spark.driver.extraJavaOptions="-Dlog4j.configuration=test_log4j.properties -Dlog4j.debug" \
--conf spark.executor.extraJavaOptions="-Dlog4j.configuration=test_log4j.properties -Dlog4j.debug" \
${jar_path}
当我调试应用程序时,我可以看到,给定的 test_log4j.properties 文件被读取。
我错过了什么吗?
解决方案
推荐阅读
- php - 具有域代理不一致行为的 Symfony 本地 Web 服务器
- java - android xml布局的意外结果
- azure-devops - 保留管道发布的 Nuget 包
- postgresql - PostgreSQL 查询经过的时间间隔
- c++ - VsCode 的错误曲线是怎么回事?
- laravel - 是否可以在 laravel 的单元测试中传递令牌来检查端点?传递令牌为空但检测到用户
- python - 在分布式工作人员中执行 Dask Graph
- firebase - 这个流是否像我想象的那样工作?
- google-app-engine - 使用 Cloud Domains 注册域
- python - 在同一构建目录中安装期间重复构建 Pip?