【问题标题】:Custom log4j.properties on AWS EMRAWS EMR 上的自定义 log4j.properties
【发布时间】:2017-07-16 02:39:40
【问题描述】:

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

--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 设置上运行时,我可以让它工作。

有什么想法吗?

【问题讨论】:

    标签: apache-spark log4j emr


    【解决方案1】:

    基本上,在与支持人员聊天并阅读文档后,我发现有 2 个选项可以做到这一点:

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

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

    【讨论】:

    • 如果 Spark 作业在集群中运行,解决方案 2 是否也有效?像我有 20-40 台机器,每个工人也可以读取 log4j 属性文件?谢谢
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      这是最简单的解决方案,在我的情况下效果很好

      1. 通过终端 SSH 到 EMR 集群
      2. 进入 conf 目录 (cd /usr/lib/spark/conf)
      3. 用您的自定义值替换 log4j.properties 文件。
      4. 确保您正在编辑具有 root 用户访问权限的文件(键入 sudo -i 以作为 root 用户登录)

      注意:该集群中运行的所有spark应用都会输出自定义log4j.properties文件中定义的日志。

      【讨论】:

        猜你喜欢
        • 2017-12-13
        • 1970-01-01
        • 2015-10-04
        • 1970-01-01
        • 1970-01-01
        • 2015-10-06
        • 2019-04-19
        • 2019-07-01
        • 2021-03-19
        相关资源
        最近更新 更多