繁体   English   中英

我如何修剪执行者在火花流中的日志

[英]How can I prune executors' logs in spark streaming

我正在处理以独立模式运行的火花流作业。 默认情况下,执行程序将日志附加到$SPARK_HOME/work/app_idxxxx/stderrstdout文件中。 现在,当应用程序运行了很长时间(比如一个月或更长时间)并且它在stderr文件中生成大量日志时,问题就来了。 我想每天汇总 stderr 一周,然后存档(删除)。 我用org.apache.log4j.RollingFileAppender更改了log4j.properties ,并将日志定向到一个文件而不是stderr ,但该文件不尊重滚动并不断增长。 创建一个 cron 作业来执行此操作也不起作用,因为 spark 有一个指向该特定文件的指针并且更改名称可能不起作用。

我找不到这些特定日志的任何文档。 我真的很感激任何帮助。

在深入挖掘之后,我终于找到了解决问题的方法,并将其发布在这里,这样下一个人就不会经历所有这些痛苦和试验/错误。 这些日志的设置在两个不同的地方。 $SPARK_HOME/conf/spark-default.conf in each executor程序中添加以下三行:

spark.executor.logs.rolling.time.interval  daily
spark.executor.logs.rolling.strategy  time
spark.executor.logs.rolling.maxRetainedFiles  7

您需要in each executor程序中更改的另一个文件是$SPARK_HOME/conf/spark-env.sh添加以下行:

SPARK_WORKER_OPTS="$SPARK_WORKER_OPTS -Dspark.worker.cleanup.enabled=true -Dspark.worker.cleanup.interval=1800 
 -Dspark.worker.cleanup.appDataTtl=864000 
-Dspark.executor.logs.rolling.strategy=time 
-Dspark.executor.logs.rolling.time.interval=daily 
-Dspark.executor.logs.rolling.maxRetainedFiles=7 "

export SPARK_WORKER_OPTS

这些更改后,它开始正常工作。 希望这可以帮助一些人:)

如果您处于独立模式,只需导出一个环境就足够了:

export SPARK_WORKER_OPTS="-Dspark.executor.logs.rolling.strategy=time -Dspark.executor.logs.rolling.time.interval=daily -Dspark.executor.logs.rolling.maxRetainedFiles=7"

你也可以参考: http ://apache-spark-user-list.1001560.n3.nabble.com/Executor-Log-Rotation-Is-Not-Working-td18024.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM