Hadoop程序调试

一. System.out 和 System.err
(1)在Main函数里使用System.out标准输出和System.err标准错误输出,输出定向到执行程序节点的终端上。即在完全分布的Hadoop部署中,输出会定向到启动程序的节点的终端上。

(2)Mapper针对每个split,会实例化一个Mapper对象作为一个task,在Hadoop集群中的某个机器中的某个Map槽上执行。Mapper对象中的map函数和configure函数会被主程序以RPC方式调用。因此,在Mapper对象中System.out和System.err输出的结果并不会定向到执行程序节点的终端上。这样的话,查看Mapper中的输出只有以下两种方法:
*在jobtracker的Web页面查看,默认绑定到50030端口。然后根据jobid进入job详情页面,然后进入map详情的页面,可以看到本次job执行的map task的列表。进入任意一个然后查看Task Logs可以看到对应的map task的stdout logs和stderr logs,分别就是System.out和System.err输出的内容。
*进入执行某个map任务的节点,在<mapred.local.dir>/userlogs/job_<jobid>/attempt_<taskid>/目录中,stdout文件和stderr文件分别就是System.out和System.err输出的内容。这种方法需要节点主机的访问权限,不是很方便。Reducer的情况和Mapper差不多,参照Mapper的方法查看。


(3)Eclipse
在使用eclipse和本地搭建的伪分布环境中调试程序,System.out和System.err输出都会定向到eclipse的终端中。但在本地伪分布环境中直接jar执行时只显示main的输出。可能eclipse的hadoop插件使用了某种方法,尚未分析。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值