分享

[MapReduce]MapReduce调试:在TaskTracker节点上查看打印信息




业务背景
MapReduce编程模型的线上调试并不方便,它不像本地Java程序那样可以很方便地及时看到输出结果,本文将提供一种比较简捷的方式对MapReduce Job进行调试。

分析
完全并行模式下的MapReduce Job,使用
[mw_shl_code=java,true]System.out.println("xxx");[/mw_shl_code]
并不会打印到控制台上,因为完全并行模式下的MR Job是分布在集群上各个TaskTracker节点上运行的,因此,使用System.out.println的结果,是将打印信息打印到实际运行的Slave节点上的

如何在TaskTracker节点上查看打印信息
如下一段代码来自MapReduce Job:
[mw_shl_code=java,true]...
for (PmsPageTpaModel e : pmsPageTpaList) {
    if (e.getPageTypeId() == referPageTypeId
            && e.getTpa().equals(tpa)) {
        // ------ debug info -----------------------
        System.out.println("DebugInfo : "
                + e.getPageTypeId() + ", "
                + e.getTpa() + ", "
                + e.getAlgorithmId());
        // ------ debug info -----------------------

        return e.getAlgorithmId();
    }
}
...[/mw_shl_code]

执行上面的Job,等待执行完毕以后,进入JobTracker页面
1.png
因为上面的程序代码是在Reduce端进行的,所以点击“Reduce”,进入后可以看到Reduce端的所有TaskTracker节点
2.png
选择一个TaskTracker节点进去
3.png
然后点击logs,查看TaskTracker节点的日志信息
4.png
5.png



结论

完全并行模式的MR模型,可以借助JobTracker页面,结合


[mw_shl_code=java,true]System.out.println("xxx");[/mw_shl_code]


在 已经运行完成的Job的 TaskTracker节点上查看打印信息。




来自:Maxwell_

已有(2)人评论

跳转到指定楼层
arBen 发表于 2015-5-15 08:40:31
恩恩.小技巧,谢谢楼主分享
回复

使用道具 举报

gwgyk 发表于 2015-5-15 09:27:42
请教下楼主,第一张图片里的页面是怎么弄出来的啊?楼主用的是哪个版本呢?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条