在 dataproc 上调整 Spark 日志级别的最优雅和最健壮的方法是什么?

Fra*_*ank 5 logging google-cloud-dataproc

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

几个建议:

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

--properties 'log4j:hadoop.root.logger=WARN,console'
Run Code Online (Sandbox Code Playgroud)

也许不是,如文档所示:

--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
Run Code Online (Sandbox Code Playgroud)

但是这样就足够了,还是我们还需要更改环境变量 hadoop.root.logger 呢?

Den*_*Huo 3

该答案自 2023 年第三季度起已过时

请参阅此文档了解 Dataproc 的最新信息。

  • 有没有办法在“--properties”中使用“spark.driver.extraJavaOptions”和“spark.executor.extraJavaOptions”来定义“-Dlog4j.configuration”以使用“log4j.properties”文件资源在我的 jar 中,或者更好的是位于“gs://”? (2认同)