【问题标题】:How can I reduce the amount of logs generated from my Hadoop Yarn Container?如何减少从我的 Hadoop Yarn 容器生成的日志量?
【发布时间】:2017-08-03 23:56:00
【问题描述】:

我正在使用 Hadoop 2.7.3,使用 Yarn 做一些 map reduce。 为每个容器生成的日志是天文数字。显然使用的级别是DEBUG。 我想将日志级别提高到 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 中所述,但这没有帮助。我的每个容器的标准输出文件都很大......而且很可能也是我的 map/reduce 这么慢的原因。

有人知道如何在我的标准输出容器日志文件中将日志级别提高到 INFO 吗?

这是我的标准输出的摘录:

~/hadoop/logs/userlogs/application_1501740469795_0001/container_1501740469795_0001_01_000001:1282> 更多标准输出 08:08:55.337 [main] 调试 org.apache.hadoop.metrics2.impl.MetricsSystemImpl - JvmMetrics、JVM 相关指标等。 08:08:55.348 [main] 调试 org.apache.hadoop.metrics2.lib.MutableMetricsFactory - 字段 org.apache.hadoop.metrics2.lib.MutableCounterInt org.apache.hadoop.mapreduce.v2.app.metrics.MRAppMetrics.jobsSubmitted带有注释@org.apache.hadoop.metrics2.annotation.Metric(about=, sampleName=Ops, always=false, type=DEFAULT, 值=[],值名称=时间) 08:08:55.355 [main] 调试 org.apache.hadoop.metrics2.lib.MutableMetricsFactory - 字段 org.apache.hadoop.metrics2.lib.MutableCounterInt org.apache.hadoop.mapreduce.v2.app.metrics.MRAppMetrics.jobsCompleted带有注释@org.apache.hadoop.metrics2.annotation.Metric(about=, sampleName=Ops, always=false, type=DEFAULT, 值=[],值名称=时间) 08:08:55.360 [main] 调试 org.apache.hadoop.metrics2.lib.MutableMetricsFactory - 字段 org.apache.hadoop.metrics2.lib.MutableCounterInt org.apache.hadoop.mapreduce.v2.app.metrics.MRAppMetrics.jobsFailed带有注释@org.apache.hadoop.metrics2.annotation.Metric(about=, sampleName=Ops, always=false, type=DEFAULT, va lue=[], valueName=时间) 08:08:55.364 [main] 调试 org.apache.hadoop.metrics2.lib.MutableMetricsFactory - 字段 org.apache.hadoop.metrics2.lib.MutableCounterInt org.apache.hadoop.mapreduce.v2.app.metrics.MRAppMetrics.jobsKilled带有注释@org.apache.hadoop.metrics2.annotation.Metric(about=, sampleName=Ops, always=false, type=DEFAULT, va lue=[], valueName=时间) 08:08:55.364 [main] 调试 org.apache.hadoop.metrics2.lib.MutableMetricsFactory - 字段 org.apache.hadoop.metrics2.lib.MutableGaugeInt org.apache.hadoop.mapreduce.v2.app.metrics.MRAppMetrics.jobsPreparing带有注释@org.apache.hadoop.metrics2.annotation.Metric(about=, sampleName=Ops, always=false, type=DEFAULT, v 值=[],值名称=时间) 08:08:55.365 [main] 调试 org.apache.hadoop.metrics2.lib.MutableMetricsFactory - 字段 org.apache.hadoop.metrics2.lib.MutableGaugeInt org.apache.hadoop.mapreduce.v2.app.metrics.MRAppMetrics.jobsRunning带有注释@org.apache.hadoop.metrics2.annotation.Metric(about=, sampleName=Ops, always=false, type=DEFAULT, val ue=[], valueName=时间) 08:08:55.365 [main] 调试 org.apache.hadoop.metrics2.lib.MutableMetricsFactory - 字段 org.apache.hadoop.metrics2.lib.MutableCounterInt org.apache.hadoop.mapreduce.v2.app.metrics.MRAppMetrics.mapsLaunched带有注释@org.apache.hadoop.metrics2.annotation.Metric(about=, sampleName=Ops, always=false, type=DEFAULT, 值=[],值名称=时间) 08:08:55.365 [main] 调试 org.apache.hadoop.metrics2.lib.MutableMetricsFactory - 字段 org.apache.hadoop.metrics2.lib.MutableCounterInt org.apache.hadoop.mapreduce.v2.app.metrics.MRAppMetrics.mapsCompleted带有注释@org.apache.hadoop.metrics2.annotation.Metric(about=, sampleName=Ops, always=false, type=DEFAULT, 值=[],值名称=时间) ...

感谢您的帮助。

【问题讨论】:

  • mapred-site.xml 中的mapreduce.map.log.levelmapreduce.reduce.log.level 是什么?
  • 我没有设置它们。我对两者都使用了默认值,即 INFO。现在我尝试在我的 mapred-site.xml 中指定它们,但这无助于获得相同的结果。

标签: hadoop logging containers hadoop-yarn


【解决方案1】:

问题是我忽略了发送到标准错误的警告。

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 文件中,并将其所需的库放在一个子目录 lib 中。我在它的 lib 中包含了一个额外的 slf4j 绑定。

解决方案是从我的作业 jar 文件中删除第二个 slf4j 绑定。

在此之后没有混淆,使用的跟踪级别是定义的,即 INFO。 !!!

【讨论】:

  • 这实际上修复了许多副作用,例如“无法访问的节点”、失败的任务......
猜你喜欢
  • 1970-01-01
  • 2023-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-09
  • 2018-02-07
相关资源
最近更新 更多