Spark执行器日志(stderr)滚动

时间:2016-10-27 10:17:49

标签: apache-spark

我尝试将配置属性设置为翻转stderr日志(正在增长和增长)

mySparkConf.set("spark.executor.logs.rolling.maxRetainedFiles","5")
mySparkConf.set("spark.executor.logs.rolling.time.interval","minutely")
mySparkConf.set("spark.executor.logs.rolling.strategy","time")

mySparkConf.set("spark.executor.logs.rolling.maxRetainedFiles","5")
mySparkConf.set("spark.executor.logs.rolling.maxSize","100000")
mySparkConf.set("spark.executor.logs.rolling.strategy","size")

它不起作用或它的工作方式与我预期的不同(没有太多的文档)。

例如,我希望基于时间的滚动会在每分钟后创建新文件(如上所述)。然而,在那段时间之后,它仍然在增长。

mySparkConf = SparkConf()
...
mySparkConf.set("spark.executor.logs.rolling.maxRetainedFiles","5") mySparkConf.set("spark.executor.logs.rolling.maxSize","100000") mySparkConf.set("spark.executor.logs.rolling.strategy","size")
...
mySparkContext = SparkContext(conf=mySparkConf) mySparkStreamingContext = StreamingContext(mySparkContext,10) mySparkSession = SparkSession.builder.appName("my app").config(conf=mySparkConf).getOrCreate()

3 个答案:

答案 0 :(得分:1)

您需要在两个位置更改(添加一些内容)。 $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

您需要更改for 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
这些对我有用。

答案 1 :(得分:0)

您可以使用以下属性在spark-defaults.conf下的install_location/resources/spark/conf/中配置属性:

spark.executor.logs.rolling.maxRetainedFiles 5
spark.executor.logs.rolling.strategy size
spark.executor.logs.rolling.maxSize 100000

请注意,在RollingPolicy代码中检查了MINIMUM_SIZE_BYTES,因此请确保生成足够的日志(超过81920字节)来滚动文件。

参考。 https://github.com/dgshep/spark/commit/258e6c3786ed79ab0245bc7b37a5f55eefbf4358

答案 2 :(得分:0)

相当古老的问题,但仍缺乏解释 - 这些属性不是应用程序设置 - 它们是Spark Worker设置,因此您必须将它们传递给Worker而不是在SparkConf中设置它们。