AWS EMR上的自定义log4j.properties

问题描述:

我无法覆盖和使用Amazon EMR上的自定义log4j.properties。我在EMR上运行Spark(Yarn),并尝试使用Spark-Submit中的所有下列组合尝试使用自定义log4j。AWS EMR上的自定义log4j.properties

--driver-java-options "-Dlog4j.configuration=hdfs://host:port/user/hadoop/log4j.properties" 

--conf "spark.driver.extraJavaOptions=-Dlog4j.configuration=hdfs://host:port/user/hadoop/log4j.properties" 

我也尝试使用file:////而不是hdfs从本地文件系统中选择。这似乎没有工作。但是,当我在本地Yarn设置上运行时,我可以得到这个工作。

任何想法?

log4j对HDFS一无所知,因此无法接受hdfs://路径作为其配置文件。有关配置log4j的更多信息,请参见here

要在EMR上配置log4j,您可以使用Configuration API将键值对添加到驱动程序和执行程序加载的log4j.properties文件中。具体来说,您想要将您的属性添加到spark-log4j配置分类中。

基本上,支持聊天,阅读文档后,我看到有为此,可使用2种选择:

1 - 通过配置造就了EMR时通过log4j.properties。乔纳森在他的回答中提到了这一点。

2 - 将“--files /path/to/log4j.properties”开关包含到spark-submit命令中。这会将log4j.properties文件分发到每个Spark Executor的工作目录,然后将-Dlog4j配置更改为仅指向文件名:“spark.driver.extraJavaOptions = -Dlog4j.configuration = log4j.properties”

+0

解决方案如果Spark作业在集群中运行,那么2也是可行的?就像我有20-40台机器一样,每个工人也可以读取log4j属性文件?谢谢 – SharpLu

+0

是的,它也应该与群集一起工作。 – Kaptrain