在数据平台上调整Spark的日志级别的最优雅和最强大的方法是什么?

时间:2016-03-23 08:55:08

标签: logging google-cloud-dataproc

如前面的答案中所述,更改Spark群集详细程度的理想方法是更改​​corresponding log4j.properties。但是,在dataproc Spark上运行Yarn,因此我们必须调整全局配置而不是/ usr / lib / spark / conf

几点建议:

在dataproc上,我们有几个gcloud命令和属性,我们可以在群集创建过程中传递。 See documentation 是否可以通过指定

来更改/ etc / hadoop / conf下的log4j.properties
--properties 'log4j:hadoop.root.logger=WARN,console'

也许不是,如文档所述:

  

--properties命令无法修改未显示的配置文件   上方。

另一种方法是在集群init期间使用shell脚本并运行sed:

# change log level for each node to WARN
sudo sed -i -- 's/log4j.rootCategory=INFO, console/log4j.rootCategory=WARN, console/g'\
                     /etc/spark/conf/log4j.properties
sudo sed -i -- 's/hadoop.root.logger=INFO,console/hadoop.root.logger=WARN,console/g'\
                    /etc/hadoop/conf/log4j.properties

但它是否足够或者我们是否还需要更改env变量hadoop.root.logger?

2 个答案:

答案 0 :(得分:4)

目前,你是对的--properties不支持额外的log4j设置,但这肯定是我们谈到添加的内容;一些考虑因素包括平衡对Spark和Yarn进行细粒度控制的能力与其他长时间运行的守护进程的日志记录配置(hiveserver2,HDFS守护进程等)之间的平衡,而不是保持最小/简单的设置。以共享的方式。

至少对于Spark 驱动程序日志,您可以使用--driver-log-levels设置作业提交时间,该时间应优先于任何/etc/*/conf设置,否则为您描述,初始化操作是在集群启动时立即编辑文件的合理方法,请记住它们可能会随着时间和版本的变化而变化。

答案 1 :(得分:0)

最近,通过 --properties 标签添加了对 log4j 属性的支持。例如:您现在可以使用“--properties 'hadoop-log4j:hadoop.root.logger=WARN,console'”。查看此页面 (https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/cluster-properties) 了解更多详情