我已尝试过多种方法将Hadoop中的日志记录级别设置为WARN,但每次都失败了。 首先,我尝试通过简单地将“INFO”替换为“WARN”来配置log4j.properties文件。没有结果。
接下来,我尝试提供Hadoop UNIX命令(根据http://hadoop.apache.org/common/docs/current/commands_manual.html#daemonlog):
$ hadoop daemonlog -setlevel
是否有可能实际上必须更改源代码才能使其工作?记录通常很容易控制,在大多数情况下,通常会稍微调整记录属性......
答案 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
重新启动进程时,上述设置会消失。这是调试问题的临时解决方案。