hadoop container stdout总是空的

时间:2015-01-08 14:47:23

标签: java hadoop mapreduce yarn

为什么hadoop中作业容器的stdout文件总是大小为0.

在java上

import org.apache.log4j.Logger;
static final Logger MAPLOGGER= Logger.getLogger(MyMap.class.getName());
MAPLOGGER.warn("key is :"+key);

运行jar后,生成3个文件

stderr,stdout,syslog

stderr包含

log4j:WARN No appenders could be found for logger   (org.apache.hadoop.metrics2.impl.MetricsSystemImpl).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

究竟MAPLOGGER.warn("key is :"+key);写日志?

1 个答案:

答案 0 :(得分:0)

它现在没有在任何地方写它,因为你还没有设置log4j。

从WARN消息中的链接:

"为什么我会看到关于"没有找到记录器"和"请正确配置log4j"? 当无法找到默认配置文件log4j.properties和log4j.xml且应用程序未执行显式配置时,会发生这种情况。 log4j使用Thread.getContextClassLoader()。getResource()来定位默认配置文件,而不是直接检查文件系统。了解放置log4j.properties或log4j.xml的适当位置需要了解正在使用的类加载器的搜索策略。 log4j不提供默认配置,因为在某些环境中可能禁止输出到控制台或文件系统。"

因此,您需要设置log4j引擎,并将其整体提供给Java,或者在应用程序中明确声明它们的位置。