将Hadoop中的日志记录级别设置为WARN

时间:2012-01-23 17:08:51

标签: logging hadoop

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

接下来,我尝试提供Hadoop UNIX命令(根据http://hadoop.apache.org/common/docs/current/commands_manual.html#daemonlog):

$ hadoop daemonlog -setlevel

是否有可能实际上必须更改源代码才能使其工作?记录通常很容易控制,在大多数情况下,通常会稍微调整记录属性......

4 个答案:

答案 0 :(得分:5)

我宁愿使用

  

HADOOP_ROOT_LOGGER = WARN,DRFA

在hadoop-env.sh

或者您可以在log4j.properties中使用hadoop.root.logger

DRFA将允许日志进入File Appender而不是Console - > System.err的输入/输出。

答案 1 :(得分:3)

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

    hadoop daemonlog -setlevel hostname:port className logLevel

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

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

答案 2 :(得分:2)

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

conf/log4j.properties中的示例行:

hadoop.root.logger=WARN,console

答案 3 :(得分:2)

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

示例:对于Namenode:hadoop daemonlog -setlevel lxv-centos-01:50070 org.apache.hadoop.hdfs.server.namenode DEBUG

对于Resourcemanager yarn daemonlog -setlevel lxv-centos-01:8088 org.apache.hadoop.yarn.server.resourcemanager DEBUG

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