在我们的 EMR 集群中,我们使用自定义 log4j-appenders 和 log4j.properties 来允许我们将日志转发到 Splunk 并让我们做一些提供的库和配置不知道如何做的魔术。
在 EMR 3.x 中,我们使用引导操作来做到这一点:
- 从 s3 下载我们的自定义 log4j appender jar,log4j.properties, 我们自定义的 container-log4j.properties。
- 将我们自定义的 log4j appender jar 放入 yarn lib 目录中 /home/hadoop/share/hadoop/yarn/lib/.
- 更新 Hadoop 类路径以使用我们的自定义 log4j 附加器
- 将我们修改后的 container-log4j.properties 推送到 hadoop-yarn-server-nodemanager.jar 位于 /home/hadoop/share/hadoop/yarn/
所有这些都有效,并允许我们在整个 Hadoop 进程中使用我们的 appender。
我们尝试升级到 EMR 版本 v4,但我们注意到有一个重大变化,即在没有安装 hadoop-yarn 时正在执行引导操作(路径/usr/lib/hadoop-yarn/没有安装存在),因此没有 hadoop-yarn-server-nodemanager.jar 需要修改,因为它还没有安装 (我们使用以下命令修改 jar:jar uf/usr/lib/hadoop-yarn/hadoop-yarn-server-nodemanager.jar container-log4j.properties )而不是我们可以放置自定义 log4j-appender 的 lib 文件夹。
我们如何在 EMR 4.x 中进行这些更改,以允许我们自定义日志记录?
最佳答案
您可以按照本页的说明覆盖您的 log4j 和 container-log4j 设置。 http://docs.aws.amazon.com//ElasticMapReduce/latest/ReleaseGuide/emr-4.7.2/emr-configure-apps.html
如果您使用的是 UI,请填写配置,如果您使用的是 CLI,请使用 --configurations file://./configurations.json
关于java - EMR - 在 Hadoop(和 YARN)中使用自定义日志记录附加程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34061287/