我正在尝试调试Cloudera Hadoop的 WordCount 示例,但我不能。我已经记录了映射器和减速器类,但在控制台中没有出现日志。
我附上图片。在第一张图片中,Java 日志。
在第二个图像中,结果记录。它没有出现第一个:( http://i56.tinypic.com/2eztkli.png
有谁知道??非常感谢!!
我正在尝试调试Cloudera Hadoop的 WordCount 示例,但我不能。我已经记录了映射器和减速器类,但在控制台中没有出现日志。
我附上图片。在第一张图片中,Java 日志。
在第二个图像中,结果记录。它没有出现第一个:( http://i56.tinypic.com/2eztkli.png
有谁知道??非常感谢!!
您正在执行“hadoop jar ...”,因此您正在使用实际的 Hadoop 集群(可能是单节点)开始您的工作。
这意味着所有日志记录都由集群完成,而不是在控制台上。您在控制台上看到的内容本质上只是一个进度指示器。
你的工作被分成一个或多个 map 任务和一个或多个 reduce 任务。这些任务中的每一个都是一个单独的 java 进程,并且将具有单独的日志记录(由多个文件组成)。
您应该在 $HADOOP_LOG_DIR/userlogs 中找到这些日志文件
因为很多事情是并行完成的,所以您不希望这些日志文件成为“一个”巨大的日志文件。这将成为一个无用的混乱。
现在学习和开发 hadoop 应用程序有一个更简单的方法:只需将应用程序作为普通 Java 应用程序启动即可在本地模式下运行应用程序:java -jar ...
Oh it's a simple fix. Use System.out.println() and then look on the HTML interface of the jobtracker. Go to the task that has done Map or Reduce, which one contains the println, and then if you go on to the log report for that task, you'll find your outputs printed out there.
如果要在控制台中显示信息,请执行 System.out.println("blah"); 在您的 Java 作业中,它运行良好,特别是在传递参数(例如,如果参数错误时使用)并且在您的 jar 中执行不止一项工作等时。筛选 Hadoop 日志是乏味的,如果您只需将其放到控制台上正在做真正的工作。