我一直在尝试更改用户日志的日志级别,即显示在 /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.level
在 mapred-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。
3条答案
按热度按时间of1yzvn41#
真正的答案是
yarn.app.mapreduce.am.log.level
但是,最关键的是,它需要在提交时在hadoop作业配置中设置。不能在群集上全局设置它。全局集群将始终默认为INFO
,因为它是硬编码的。使用
container-log4j.properties
单独使用将不起作用,因为yarn将覆盖命令行上的日志级别值。查看方法addLog4jSystemProperties
的org.apache.hadoop.mapreduce.v2.util.MRApps
并与org.apache.hadoop.mapreduce.MRJobConfig
.container-log4j.properties
确实会得到尊重,但它不能覆盖此属性设置的级别。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浏览。
nkkqxpd93#
您应该尝试编辑(或者如果它不存在的话创建):/etc/hadoop/conf/container-log4j.properties。
你可以用一个简单的
ps aux
:命令行包括-Dlog4j.configuration=container-log4j.properties
.