5

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

几个建议:

在 dataproc 上,我们有几个 gcloud 命令和属性,我们可以在集群创建期间传递。请参阅文档 是否可以通过指定更改 /etc/hadoop/conf 下的 log4j.properties

--properties 'log4j:hadoop.root.logger=WARN,console'

也许不是,从文档中:

--properties 命令不能修改上面未显示的配置文件。

另一种方法是在集群初始化期间使用 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

但这是否足够,或者我们还需要更改环境变量 hadoop.root.logger 吗?

4

2 回答 2

4

目前,您是对的,--properties不支持额外的 log4j 设置,但这肯定是我们讨论过的添加;一些考虑因素包括在对 Spark 与 Yarn 与其他长时间运行的守护进程的日志配置(hiveserver2、HDFS 守护进程等)进行细粒度控制的能力之间取得平衡,与保持最小/简单的设置相比,该设置贯穿于所有内容以共享的方式。

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

于 2016-03-23T19:52:08.787 回答
1

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

于 2021-07-07T18:33:20.047 回答