当前位置:  开发笔记 > 运维 > 正文

hadoop mapreduce框架在哪里发送我的System.out.print()语句?(标准输出)

如何解决《hadoopmapreduce框架在哪里发送我的System.out.print()语句?(标准输出)》经验,为你挑选了4个好方法。

我想调试一个mapreduce脚本,并且没有遇到太多麻烦试图在我的程序中放置一些print语句.但我似乎无法在任何日志中找到它们.



1> rOrlig..:

其实标准输出只显示System.out.println()了的非映射精简类.

System.out.println()在地图和减少阶段可以在日志中可以看出.访问日志的简便方法是

http:// localhost:50030/jobtracker.jsp- >单击已完成的作业 - >单击地图或缩小任务 - >单击任务日志 - >任务日志 - >标准日志.

希望这可以帮助



2> 小智..:

另一种方式是通过终端:

1)进入Hadoop_Installtion目录,然后进入"logs/userlogs".
2)打开您的job_id目录.
3)如果你想要mapper输出或,用_ m_检查目录_r_如果你正在寻找减速器.

示例:在Hadoop-20.2.0中:

> ls ~/hadoop-0.20.2/logs/userlogs/attempt_201209031127_0002_m_000000_0/
log.index   stderr      stdout      syslog

以上表示:
Hadoop_Installation:〜/ hadoop-0.20.2
job_id:job_201209031127_0002
_m_:map任务,"地图编号":_000000_

4)开放标准输出,如果你使用"的System.out.println"或标准错误,如果你使用"system.err.append".

PS.其他hadoop版本可能有不同的层次结构,但它们都应该在$ Hadoop_Installtion/logs/userlogs下.



3> MacFreek..:

在Hadoop集群上yarn,您可以使用以下命令获取日志,包括stdout:

yarn logs -applicationId application_1383601692319_0008

出于某种原因,我发现这比我在网络界面中看到的更完整.Web界面没有System.out.println()为我列出输出.


谢谢你给hadoop2答案.你能告诉我为什么我在执行那个命令后得到这个错误吗?`日志在/ tmp/logs/hadoopuser/logs/application_1441282624447_3854`不可用,并且`日志聚合尚未完成或未启用

4> 小智..:

要在控制台上获取stdout和日志消息,您可以将apache commons日志框架用于mapper和reducer.

public class MyMapper extends Mapper<..,...,..,...> {

    public static final Log log = LogFactory.getLog(MyMapper.class)

    public void map() throws Exception{
        // Log to stdout file
        System.out.println("Map key "+ key);

        //log to the syslog file
        log.info("Map key "+ key);

        if(log.isDebugEanbled()){
            log.debug("Map key "+ key);
        }

        context.write(key,value);
    }
}

推荐阅读
家具销售_903
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有