2012-01-23 102 views
6

我试过很多方法将Hadoop中的日志记录级别设置为WARN,但每次都失败。 首先,我尝试通过在每个地方简单地用“WARN”替换“INFO”来配置log4j.properties文件。没有结果。将Hadoop中的日志记录级别设置为WARN

接下来,我想给Hadoop的UNIX(按照http://hadoop.apache.org/common/docs/current/commands_manual.html#daemonlog)命令:

$ Hadoop的daemonlog -setlevel

有没有可能是一个真正有改变的源代码,使其工作?日志记录通常很容易控制,在大多数情况下通常会对日志记录属性进行轻微调整...

+0

“无处不在”是什么意思?你是说使用'log4j.logger.org.apache.hadoop = WARN'不会做你想做的事吗?除非你确定所有东西基本上都能正常工作,否则我也会提高把水平提高到WARN的水平。 –

+1

例如,我的log4j.properties文件现在包含以下几行:log4j.logger.org.apache.hadoop.hdfs.server.namenode.FSNamesystem.audit = WARN hadoop.metrics.log.level = WARN log4j.logger。 org.apache.hadoop.mapred.JobTracker = WARN log4j.logger.org.apache.hadoop.mapred.TaskTracker = WARN log4j.logger.org.apache。hadoop.fs.FSNamesystem = WARN log4j.logger.org.apache.hadoop.metrics2 = $ {hadoop.metrics.log.level} – chebychev2000

回答

2

可以通过修改conf/log4j.properties配置文件中的hadoop.root.logger属性来调整默认日志级别。请注意,您必须为集群中的每个节点执行此操作。

实施例线conf/log4j.properties

hadoop.root.logger=WARN,console 
+0

并且在配置更改之后还应该重新启动节点... – yair

4

我宁愿用

HADOOP_ROOT_LOGGER = WARN,DRFA

在hadoop-env.sh

或者可以使用hadoop.root.logger in log4j.properties

DRFA将允许日志进入文件附加程序而不是控制台 - > System.err/out。

+0

用于hadoop cli可以启用该会话的日志级别: {code} export HADOOP_ROOT_LOGGER = DEBUG,console hadoop fs -ls/ {code} – selle

2

Apache hadoop文档有点误导。如果您正在调试问题,则可以使用以下步骤即时更改日志级别。你应该提到包名而不是文件名。

实施例:对于的Namenode:hadoop的daemonlog -setlevel LXV-的centos-01:50070 org.apache.hadoop.hdfs.server.namenode DEBUG

对于ResourceManager的纱线daemonlog -setlevel LXV-的centos-01:8088的有机.apache.hadoop.yarn.server.resourcemanager DEBUG

当您重新启动进程时,上述设置将消失。这是一个调试问题的临时解决方案。

1

要动态更改日志级别,以便不需要重新启动守护程序,请使用hadoop daemonlog实用程序。

hadoop daemonlog -setlevel hostname:port className logLevel 

例如将datanode日志的日志级别更改为WARN。

hadoop daemonlog -setlevel hostname:50075 org.apache.hadoop.hdfs.server.datanode.DataNode WARN