如何在Hadoop2中更改用户日志的日志级别?

os8fio9y  于 2021-05-30  发布在  Hadoop
关注(0)|答案(3)|浏览(854)

我一直在尝试更改用户日志的日志级别,即显示在 /var/log/hadoop-yarn/userlogs/application_<id>/container_<id> 关于cdh 5.2.1。然而,无论我尝试什么,只有 INFO 将显示级别日志。我要启用 TRACE 调试的级别日志。
到目前为止我尝试过的事情:
将所有记录器设置为中的跟踪级别 /etc/hadoop/conf/log4j.properties .
设置 mapreduce.map.log.level 以及 mapreduce.reduce.log.levelmapred-site.xml .
设置 mapreduce.map.log.level 以及 mapreduce.reduce.log.level 在提交作业配置之前。
包括 log4j.properties 在我的jobjar文件中,它将根log4j记录器设置为跟踪。
修改 yarn-env.sh 指定 YARN_ROOT_LOGGER=TRACE,console 这些都不起作用——它们没有破坏任何东西,但是它们对 userlogs 目录。修改yarn-env.sh确实导致resourcemanager和nodemanager日志进入跟踪级别。不幸的是,这些对我的目的没有用处。
在中出现以下错误 /var/log/hadoop-yarn/userlogs/application_<id>/container_<id>/stderr 这可能是相关的。

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/usr/lib/zookeeper/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/tmp/hadoop-yarn/nm-local-dir/usercache/tomcat/appcache/application_1419961570089_0001/filecache/10/job.jar/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
log4j:WARN No appenders could be found for logger (org.apache.hadoop.ipc.Server).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

我不明白为什么log4j“no configuration”消息会出现,因为存在 log4j.properties 指定根记录器的作业jar文件的根目录下的文件:

log4j.rootLogger=TRACE, stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] %m%n

我的代码并不故意使用slf4j进行日志记录,它纯粹使用log4j。

of1yzvn4

of1yzvn41#

真正的答案是 yarn.app.mapreduce.am.log.level 但是,最关键的是,它需要在提交时在hadoop作业配置中设置。不能在群集上全局设置它。全局集群将始终默认为 INFO ,因为它是硬编码的。
使用 container-log4j.properties 单独使用将不起作用,因为yarn将覆盖命令行上的日志级别值。查看方法 addLog4jSystemPropertiesorg.apache.hadoop.mapreduce.v2.util.MRApps 并与 org.apache.hadoop.mapreduce.MRJobConfig . container-log4j.properties 确实会得到尊重,但它不能覆盖此属性设置的级别。

pwuypxnk

pwuypxnk2#

在cdh5.8上,我正在作业提交时覆盖应用程序日志级别。要修改Map器和还原器的日志级别,我必须使用如下命令显式指定它们:
hadoop jar my-mapreduce-job.jar-libjars${libjars}-dyarn.app.mapreduce.am.log.level=debug,控制台dmapreduce.map.log.level=debug,控制台dmapreduce.reduce.log.level=debug,控制台
日志被写入应用程序的syslog,可以使用yarn resourcemanagerwebui浏览。

nkkqxpd9

nkkqxpd93#

您应该尝试编辑(或者如果它不存在的话创建):/etc/hadoop/conf/container-log4j.properties。
你可以用一个简单的 ps aux :命令行包括 -Dlog4j.configuration=container-log4j.properties .

相关问题