hadoop2中的定制log4j appender

py49o6xq  于 2021-06-03  发布在  Hadoop
关注(0)|答案(3)|浏览(507)

如何在hadoop2(amazonemr)中指定定制的log4j appender?
hadoop2忽略包含自定义appender的log4j.properties文件,用内部log4j.properties文件覆盖它。有一面旗帜 -Dhadoop.root.logger 它指定了日志记录阈值,但对自定义附加器没有帮助。

uurity8g

uurity8g1#

在部署中查找hadoop-config.sh。这是在执行hadoop命令之前要获取的脚本。我在hadoop-config.sh中看到以下代码,看看修改它是否有帮助。

HADOOP_OPTS="$HADOOP_OPTS -Dhadoop.root.logger=${HADOOP_ROOT_LOGGER:-INFO,console}"
6ie5vjzr

6ie5vjzr2#

我知道这个问题已经得到了回答,但是有一个更好的方法可以做到这一点,而且这些信息在任何地方都不容易获得。实际上,hadoop中至少使用了两个log4j.properties(至少对于yarn是这样)。我使用的是cloudera,但其他发行版也会使用类似的方法。

本地属性文件

地点: /etc/hadoop/conf/log4j.properties (在客户机上)
有一个log4j.properties被普通java进程使用。它会影响java进程中发生的所有事情的日志记录,但不会影响yarn/map reduce内部的日志记录。因此,所有驱动程序代码,任何将map reduce作业放在一起的代码(例如,级联初始化消息)都将根据您在此处指定的规则进行日志记录。这几乎从来不是您关心的日志属性文件。
正如您所期望的,这个文件是在调用hadoop命令之后解析的,因此在更新配置时不需要重新启动任何服务。
如果这个文件存在,它将优先于jar中的文件(因为它通常位于类路径的前面)。如果这个文件不存在,将使用jar中的那个文件。

容器属性文件

地点: etc/hadoop/conf/container-log4j.properties (在数据节点计算机上)
这个文件决定了所有map和reduce任务的输出属性,并且几乎总是您在谈论hadoop日志记录时想要更改的内容。
在更新版本的hadoop/yarn中,有人感染了一种危险的日志热毒株,现在默认的日志配置确保单个作业可以生成几百兆的不可读垃圾,使日志非常难以读取。我建议在container-log4j.properties文件的底部放置这样的内容,以消除大多数关于处理了多少字节的非常有用的消息:

log4j.logger.org.apache.hadoop.mapreduce=WARN
log4j.logger.org.apache.hadoop.mapred=WARN
log4j.logger.org.apache.hadoop.yarn=WARN
log4j.logger.org.apache.hadoop.hive=WARN
log4j.security.logger=WARN

默认情况下,该文件通常不存在,在这种情况下,将使用hadoop-yar-server-nodemanager-stuff.jar(如uriah kremer所述)中找到的该文件的副本。但是,与其他log4j属性文件一样,如果您创建 /etc/hadoop/conf/container-log4j.properties 它会用在你所有的Yarn上。这很好!
注意:无论您做什么,jar中container-log4j-properties的副本都不会用于这些属性,因为yarn nodemanager jar在类路径中的位置更高。同样,不管互联网告诉你什么 -Dlog4j.configuration=PATH_TO_FILE 不会更改容器日志记录属性,因为在初始化容器时,该选项不会传递给yarn。

e5nszbig

e5nszbig3#

1.为了更改name节点上的log4j.properties,可以更改/home/hadoop/log4j.properties。
2.为了更改容器日志的log4j.properties,您需要在yarn containers jar处更改它,因为它们硬编码直接从项目资源加载文件。
2.1ssh到从属服务器(在emr上,您也可以简单地将其添加为引导操作,因此不需要ssh到每个节点)。ssh到hadoop从属
2.2覆盖jar资源的container-log4j.properties:
jar uf/home/hadoop/share/hadoop/yarn/hadoop-yarn-server-nodemanager-2.2.0.jar容器-log4j.properties

相关问题