如何根据驱动程序覆盖Spark的log4j.properties?

Col*_*nMc 19 logging apache-spark

我试图覆盖Spark的默认值log4j.properties,但没有任何运气.我尝试将以下内容添加到spark-submit:

--conf "spark.executor.extraJavaOptions=Dlog4j.configuration=/tmp/log4j.properties"  
--conf "spark.driver.extraJavaOptions=-Dlog4j.configuration=/tmp/log4j.properties"
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用.我也试过使用--files选项,spark-submit但似乎也没有用.有没有人有日志设置,所以你有log4j.properties每个驱动程序的文件而不使用默认值?

我正在使用Mesos和Marathon来运行Spark驱动程序.我不确定该--files选项,我找不到任何关于它如何使用以及它究竟做什么的例子.

我还想提一下,我手动将log4j.properties文件上传到我的所有节点,这些节点都有我的测试更改.

截至目前,Spark版本为1.1.0.

Nig*_*olf 14

对于驱动程序/ shell,您可以使用--driver-java-options运行时spark-shellspark-submit脚本来设置它.

在Spark中,您无法设置,--conf spark.driver.extraJavaOptions因为它是 JVM启动设置的.使用spark提交脚本时,--driver-java-options将这些选项替换为java -Dblah MyClass运行驱动程序的JVM(例如)的启动.

请注意,该-Dlog4j.configuration属性应该是有效的URL,因此如果它位于文件系统的某个位置,则使用file:URL.如果资源变量无法转换为URL,例如由于MalformedURLException,则log4j将从类路径中搜索资源.

例如,要使用自定义log4j.properties文件;

./spark-shell --driver-java-options "-Dlog4j.configuration=file:///etc/spark/my-conf/log4j.warnonly.properties"
Run Code Online (Sandbox Code Playgroud)


Nit*_*ena 5

有多种方法可以实现它,但这取决于您/应用程序的需求,为您的用例选择最好的一种 -

  • 通过向 Spark Driver 和 Executor 提供额外的 java 选项,当您的 log4j.properties 出现在集群的每个节点上的同一路径(或本地计算机,如果您在本地运行作业)时,请使用以下命令

    Spark-submit --master local[2] --conf 'spark.driver.extraJavaOptions=Dlog4j.configuration=文件:/tmp/log4j.properties' --conf 'spark.executor.extraJavaOptions=-Dlog4j.configuration=文件: /tmp/log4j.properties' --class com.test.spark.application.TestSparkJob 目标/application-0.0.1-SNAPSHOT-jar-with-dependency.jar prod

如果 log4j.properties 存在于您的 jar 中的根类路径中,那么您可以跳过命令中的 file: ,如下所示--conf 'spark.driver.extraJavaOptions=-Dlog4j.configuration=log4j.properties' --conf 'spark. executor.extraJavaOptions=-Dlog4j.configuration=log4j.properties'

  • 通过将 log4j.properties 文件发送到yarn并向 Spark Driver 和 Executor 提供额外的 java 选项,这样就不需要每个节点上的 log4j.properties,yarn 将在这种情况下进行管理,请使用以下命令

    Spark-submit --master local[2] --files /tmp/log4j.properties --conf 'spark.driver.extraJavaOptions=Dlog4j.configuration=log4j.properties' --conf 'spark.executor.extraJavaOptions=-Dlog4j。配置=log4j.properties' --class com.test.spark.application.TestSparkJob目标/application-0.0.1-SNAPSHOT-jar-with-dependency.jar prod

  • 通过更改spark conf或spark默认log4j.properties文件

    更改或更新 /etc/spark/conf.dist/log4j.properties 中的 log4j.properties

我已经尝试了所有这些并为我工作,我建议也浏览下面 Spark 帖子中的标题“调试您的应用程序”,这非常有帮助 - https://spark.apache.org/docs/latest/running-on-yarn .html


小智 1

我不相信该spark.driver.extraJavaOptions参数存在。因为spark.executor.extraJavaOptions看来你有一个错字。尝试这个:

--conf "spark.executor.extraJavaOptions=-Dlog4j.configuration=/tmp/log4j.properties"
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

15669 次

最近记录:

6 年,6 月 前