我正在尝试调试 Cloudera Hadoop 的WordCount示例,但我不能。我已经记录了映射器和reducer类,但是在控制台中没有出现日志。
我附上图片。 在第一张图片中,Java日志。
在第二个图像中,结果记录。它不会出现第一个:( http://i56.tinypic.com/2eztkli.png
有谁知道?非常感谢!!
答案 0 :(得分:2)
您正在使用“hadoop jar ...”,因此您使用实际的Hadoop集群(可能是单个节点)开始工作。
这意味着所有日志记录都由群集完成,而不是在控制台上完成。 您在控制台上看到的内容基本上只是一个进度指示器。
您的工作分为一个或多个地图任务和一个或多个减少任务。这些任务中的每一个都是一个单独的java进程,并且将具有单独的日志记录(由几个文件组成)。
您应该在$ HADOOP_LOG_DIR / userlogs
中找到这些日志文件因为许多事情是并行完成的,所以不要让这些日志文件成为“一个”巨大的日志文件。这将成为无用的混乱。
现在学习和开发hadoop应用程序有一个更简单的方法:只需将其作为普通的Java应用程序启动,只需在本地模式下运行应用程序:java -jar ...
答案 1 :(得分:1)
哦,这是一个简单的修复。使用System.out.println(),然后查看jobtracker的HTML界面。转到已执行Map或Reduce的任务,其中一个包含println,然后如果您继续执行该任务的日志报告,您将在那里找到您的输出。
答案 2 :(得分:0)
如果要在控制台中显示信息,请执行System.out.println(“blah”);在你的Java作业中,它运行良好,特别是在传递参数时(例如,如果参数使用错误),并且在jar中只做一个单独的工作,等等。通过Hadoop日志进行筛选对于向控制台进行调整是非常繁琐的。正在做实事。