我正在使用Hadoop 2.7.3,使用Yarn进行一些地图缩减。 为每个容器生成的日志是天文数字。显然使用的级别是调试。 我想将日志级别提高到 INFO。
我的安装或多或少是默认安装。
我尝试在我的hadoop-yarn-server-nodemanager-*.jar中修改container-log4j.properties,如 https://community.hortonworks.com/questions/98259/hdp-250-how-to-override-default-container-log4j-in.html 中所述,但这没有帮助。每个容器的 stdout 文件都很大......很可能也是我的地图/减少如此缓慢的原因。
有没有人知道如何将我的 stdout 容器日志文件中的日志级别提高到 INFO?
这是我的 stdout 之一的摘录:
~/hadoop/logs/userlogs/application_1501740469795_0001/container_1501740469795_0001_01_000001:1282> more stdout 08:08:55.337 [main] DEBUG org.apache.hadoop.metrics2.impl.MetricsSystemImpl - JvmMetrics, JVM related metrics etc. 08:08:55.348 [main] DEBUG org.apache.hadoop.metrics2.lib.MutableMetricsFactory - field org.apache.hadoop.metrics2.lib.MutableCounterInt org.apache.hadoop.mapreduce.v2.app.metrics.MRAppMetrics.jobs提交注释 @org.apache.hadoop.metrics2.annotation.Metric(about=, sampleName=Ops, always=false, type=DEFAULT, 值=[],值名称=时间) 08:08:55.355 [main] DEBUG org.apache.hadoop.metrics2.lib.MutableMetricsFactory - field org.apache.hadoop.metrics2.lib.MutableCounterInt org.apache.hadoop.mapreduce.v2.app.metrics.MRAppMetrics.jobsDone with annotation @org.apache.hadoop.metrics2.annotation.Metric(about=, sampleName=Ops, always=false, type=DEFAULT, 值=[],值名称=时间) 08:08:55.360 [main] DEBUG org.apache.hadoop.metrics2.lib.MutableMetricsFactory - field org.apache.hadoop.metrics2.lib.MutableCounterInt org.apache.hadoop.mapreduce.v2.app.metrics.MRAppMetrics.jobsFailed with annotation @org.apache.hadoop.metrics2.annotation.Metric(about=, sampleName=Ops, always=false, type=DEFAULT, va lue=[], 值名称=时间) 08:08:55.364 [main] DEBUG org.apache.hadoop.metrics2.lib.MutableMetricsFactory - field org.apache.hadoop.metrics2.lib.MutableCounterInt org.apache.hadoop.mapreduce.v2.app.metrics.MRAppMetrics.jobsKill with annotation @org.apache.hadoop.metrics2.annotation.Metric(about=, sampleName=Ops, always=false, type=DEFAULT, va lue=[], 值名称=时间) 08:08:55.364 [main] DEBUG org.apache.hadoop.metrics2.lib.MutableMetricsFactory - field org.apache.hadoop.metrics2.lib.MutableGaugeInt org.apache.hadoop.mapreduce.v2.app.metrics.MRAppMetrics.jobsPrepare with annotation @org.apache.hadoop.metrics2.annotation.Metric(about=, sampleName=Ops, always=false, type=DEFAULT, v alue=[], 值名称=时间) 08:08:55.365 [main] DEBUG org.apache.hadoop.metrics2.lib.MutableMetricsFactory - field org.apache.hadoop.metrics2.lib.MutableGaugeInt org.apache.hadoop.mapreduce.v2.app.metrics.MRAppMetrics.jobsRun with annotation @org.apache.hadoop.metrics2.annotation.Metric(about=, sampleName=Ops, always=false, type=DEFAULT, val ue=[], 值名称=时间) 08:08:55.365 [main] DEBUG org.apache.hadoop.metrics2.lib.MutableMetricsFactory - field org.apache.hadoop.metrics2.lib.MutableCounterInt org.apache.hadoop.mapreduce.v2.app.metrics.MRAppMetrics.mapsLaunch with annotation @org.apache.hadoop.metrics2.annotation.Metric(about=, sampleName=Ops, always=false, type=DEFAULT, 值=[],值名称=时间) 08:08:55.365 [main] DEBUG org.apache.hadoop.metrics2.lib.MutableMetricsFactory - field org.apache.hadoop.metrics2.lib.MutableCounterInt org.apache.hadoop.mapreduce.v2.app.metrics.MRAppMetrics.maps已完成注释 @org.apache.hadoop.metrics2.annotation.Metric(about=, sampleName=Ops, always=false, type=DEFAULT, 值=[],值名称=时间) ...
感谢您的帮助。
问题是我忽略了发送到 stderr 的警告。
SLF4J:类路径包含多个 SLF4J 绑定。 SLF4J: 在 [jar:file:/home/hadoop/HADOOP_DATA-2.7.3/yarnData/usercache/jj/appcache/application_1501771750571_0001/filecache/11/map-reducer-job.jar/lib/logback-classic-1.1.11.jar!/org/slf4j/impl/StaticLoggerBinder.class] 中找到绑定 SLF4J: 在 [jar:file:/home/hadoop/hadoop-2.7.3/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class] 中找到绑定 SLF4J:有关解释,请参阅 http://www.slf4j.org/codes.html#multiple_bindings。 SLF4J:实际绑定的类型为 [ch.qos.logback.classic.util.ContextSelectorStaticBinder]
我正在将我的工作打包在一个 Jar 文件中,并在子目录库中包含其所需的库。我在其库中包含一个额外的 slf4j 绑定。
解决方案是从我的作业jar文件中删除第二个slf4j绑定。
在此之后,没有混淆,使用的跟踪级别是定义的跟踪级别,即INFO。 !!