dataproc 上调整 Spark 日志级别的最优雅、最可靠的方法是什么?
What is the most elegant and robust way on dataproc to adjust log levels for Spark?
如之前的答案所述,更改 Spark 集群冗长程度的理想方法是更改 corresponding log4j.properties。但是,在 Yarn 上的 dataproc Spark 运行s 上,因此我们必须调整全局配置而不是 /usr/lib/spark/conf
几点建议:
在 dataproc 上,我们有几个可以在集群创建期间传递的 gcloud 命令和属性。 See documentation
是否可以通过指定
来更改 /etc/hadoop/conf 下的 log4j.properties
--properties 'log4j:hadoop.root.logger=WARN,console'
也许不是,正如文档所述:
The --properties command cannot modify configuration files not shown
above.
另一种方法是在集群初始化期间使用 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?
目前,您说得对,--properties
不支持额外的 log4j 设置,但这肯定是我们讨论过要添加的内容;一些考虑因素包括与保持 minimal/simple 设置相比,如何平衡对 Spark、Yarn 与其他 long-运行 守护进程的日志配置(hiveserver2、HDFS 守护进程等)进行细粒度控制的能力它以共享的方式连接到所有内容。
至少对于 Spark driver 日志,您可以使用 --driver-log-levels
设置作业提交时间,该时间应优先于任何 /etc/*/conf
设置,但正如您所描述的那样,init 操作是目前在集群启动时编辑文件的合理方式,请记住它们可能会随着时间和版本而改变。
最近,通过 --properties 标签添加了对 log4j 属性的支持。例如:您现在可以使用“--properties 'hadoop-log4j:hadoop.root.logger=WARN,console'”。查看此页面(https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/cluster-properties)了解更多详情
如之前的答案所述,更改 Spark 集群冗长程度的理想方法是更改 corresponding log4j.properties。但是,在 Yarn 上的 dataproc Spark 运行s 上,因此我们必须调整全局配置而不是 /usr/lib/spark/conf
几点建议:
在 dataproc 上,我们有几个可以在集群创建期间传递的 gcloud 命令和属性。 See documentation 是否可以通过指定
来更改 /etc/hadoop/conf 下的 log4j.properties--properties 'log4j:hadoop.root.logger=WARN,console'
也许不是,正如文档所述:
The --properties command cannot modify configuration files not shown above.
另一种方法是在集群初始化期间使用 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?
目前,您说得对,--properties
不支持额外的 log4j 设置,但这肯定是我们讨论过要添加的内容;一些考虑因素包括与保持 minimal/simple 设置相比,如何平衡对 Spark、Yarn 与其他 long-运行 守护进程的日志配置(hiveserver2、HDFS 守护进程等)进行细粒度控制的能力它以共享的方式连接到所有内容。
至少对于 Spark driver 日志,您可以使用 --driver-log-levels
设置作业提交时间,该时间应优先于任何 /etc/*/conf
设置,但正如您所描述的那样,init 操作是目前在集群启动时编辑文件的合理方式,请记住它们可能会随着时间和版本而改变。
最近,通过 --properties 标签添加了对 log4j 属性的支持。例如:您现在可以使用“--properties 'hadoop-log4j:hadoop.root.logger=WARN,console'”。查看此页面(https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/cluster-properties)了解更多详情