Hadoop中利用打印语句来调试程序

源代码:http://pan.baidu.com/share/link?shareid=589965&uk=4211339188

在Map中通过调用System.err.println将信息打印到日志中,而不是标准输出窗口。
在默认情况下Job的状态为hdfs://localhost:9000/user/root/input/res/1903.gz:0+73075,状态表明:输入文件的URL,以及本Job的输入数据在文件中的位置,如本例中文件1903.gz的0到73075字节有本Job处理。如果出现错误,可以通过reporter.setStatus来改变的Job的退出状态。

  • 如何查看作业的退出状态?
在运行Hadoop程序后,会打印如下类似信息:
13/05/07 22:37:11 INFO util.NativeCodeLoader: Loaded the native-hadoop library
13/05/07 22:37:11 WARN snappy.LoadSnappy: Snappy native library not loaded
13/05/07 22:37:11 INFO mapred.FileInputFormat: Total input paths to process : 12
13/05/07 22:37:11 INFO mapred.JobClient: Running job: job_201305071200_0028
其中job_201305071200_0028为Job的ID号
在http://jobtracker-host:50030/页面找到该Job的一栏,如



打开job_201305071200_0028连接,如下所示:

Hadoop中利用打印语句来调试程序_第1张图片

打开map链接,如下图所示:
Hadoop中利用打印语句来调试程序_第2张图片

可以看出task_201305071200_0028_m_000011的状态有变化,提示查看log文件。

  • 查看log文件
在http://jobtracker-host:50030/页面的最下面的Local Logs段中有Log directory一项,进入该项。进入最下面的userlogs/ ,找到与Job ID(job_201305071200_0028)对应的一行。找到出问题的task。并进入stderr 目录,打开就可以看见打印信息。

你可能感兴趣的:(Hadoop中利用打印语句来调试程序)