我尝试使用System.out.println()打印输出值,但它们不会出现在控制台上。如何使用Hadoop打印出map/reduce应用程序中的值以进行调试?调试hadoop应用程序
感谢, 迪帕克。
我尝试使用System.out.println()打印输出值,但它们不会出现在控制台上。如何使用Hadoop打印出map/reduce应用程序中的值以进行调试?调试hadoop应用程序
感谢, 迪帕克。
行打印出来使用System.out.println和通信System.err.println去那的Hadoop上的每个作业写日志。您可以通过单击各个任务来使用Web UI查看它们。
请参阅从Cloudera的这篇博客上测试了很多建议和调试Hadoop作业:http://www.cloudera.com/blog/2009/07/advice-on-qa-testing-your-mapreduce-jobs/
我想补充一点,您可以使用Counters
Hadoop JavaDoc进行调试。例如。如果你想检查,你的程序中的特定行通过的频率。
System.out.println不直接指向终端,而是写入日志文件。日志文件默认位于Hadoop目录中。所以你可以输入终端 cat /hadoop-homedirectory/logs/userlogs/jobID/attemptID/stdout
你也可以通过网页界面进入。输入ip:50070/logs/userlogs。
如果使用MRUnit & ApprovalTests是很容易打印出图的过程中减少工作。 有一个关于它在这里的视频:
HadoopApprovals.verifyMapReduce(new WordCountMapper(),
new WordCountReducer(), 0, "cat cat dog");
时会产生输出http://t.co/leExFVrf
例如代码:
[cat cat dog]
-> maps via WordCountMapper to ->
(cat, 1)
(cat, 1)
(dog, 1)
-> reduces via WordCountReducer to ->
(cat, 2)
(dog, 1)
这里指的https://stackoverflow.com/questions/23235343/debugging -hadoop-in-eclipse – Mash 2015-07-28 10:29:27