Apache spark 如何在使用HDFS和spark standalone cluster manager的多节点群集上使用spark submit提交自定义log4j.xml文件

Apache spark 如何在使用HDFS和spark standalone cluster manager的多节点群集上使用spark submit提交自定义log4j.xml文件,apache-spark,log4j,hdfs,apache-spark-standalone,Apache Spark,Log4j,Hdfs,Apache Spark Standalone,我正在使用spark submit向spark standalone cluster manager提交java jar。但是我不能为它提供定制的log4j.xml文件。 如果我使用--files选项,那么我需要将该log4j文件复制到位于同一位置的所有机器上,或者如果我使用hdfs://path提供该文件,那么它不会将该文件作为log4j并切换到默认的log4j文件 我还将-Dlog4j.configuration与local和hdfs路径一起使用,但使用--files时出现了相同的问题 如果

我正在使用spark submit向spark standalone cluster manager提交java jar。但是我不能为它提供定制的log4j.xml文件。 如果我使用--files选项,那么我需要将该log4j文件复制到位于同一位置的所有机器上,或者如果我使用hdfs://path提供该文件,那么它不会将该文件作为log4j并切换到默认的log4j文件

我还将-Dlog4j.configuration与local和hdfs路径一起使用,但使用--files时出现了相同的问题

如果有人知道解决办法,请帮助我


提前感谢。

Spark不支持使用log4j在HDFS中写入日志,而您可以在unix设备中本地写入日志

用于在spark submit命令中指定log4j的属性有:

--conf "spark.driver.extraJavaOptions=-Dlog4j.configuration= Location of your log4j.properties file"

--conf "spark.executor.extraJavaOptions=-Dlog4j.configuration= location of your log4j.properties file"
您必须在本地unix框中创建一个自定义log4j.properties文件,而不是log4j.xml

如果要在HDFS中创建自定义日志,可以在java或scala中创建接口,以指定登录级别并将日志写入HDFS
有关更多参考信息,您可以选中此项。

我正在将日志写入unix框,我只是从HDFS位置读取log4j文件。与使用log4j.configuration一样,它从本地fs搜索文件,因此我需要将saem文件复制到所有工作节点。因此,我正在寻找一种从HDFS或客户机提交log4j文件的方法,这样就不需要在所有节点上复制log4j文件,也不需要将log4j文件复制到所有节点。提交作业的节点必须是固定的,因此文件应仅位于该节点中,并且每当提交作业时,spark会将spark submit中指定的外部jars r文件加载到集群中,以在分布式模式下运行。是的,我使用的是固定节点,但当我给出log4j文件的路径时,它将在驱动程序节点上搜索与提交的节点不同的路径,因为提交的节点导致以下错误:log4j:error无法解析url[文件:/data/log4j.xml]。java.io.FileNotFoundException:/data/log4j.xml(没有这样的文件或目录)通过我的答案中的上述参数而不是通过--files参数指定log4j.properties文件。您能给我看一下spark submit命令吗?这应该是命令
spark submit--class xyz--master“Thread”--部署模式“client”--conf“spark.driver.extraJavaOptions=-Dlog4j.configuration=../conf/spark-log4j.properties”--conf“spark.executor.extraJavaOptions=-Dlog4j.configuration=/spark-log4j.properties”../lib/xyz.jar