Java 如何调试Hadoop map reduce

Java 如何调试Hadoop map reduce,java,debugging,logging,hadoop,mapreduce,Java,Debugging,Logging,Hadoop,Mapreduce,我正试图建立一个地图缩小作业 它一直运行到完成,但最后会显示奇怪的数据 当我尝试使用system.out.println(“调试数据”)调试它时 它不显示在屏幕上 使用JavaAPI生成外部日志文件,尝试使用log.severe(“日志数据”)或使用log4j logger方法log.info(日志数据)打印到屏幕上也不会起作用/ 只有当map reduce作业中出现异常时,我才能看到调试消息,但这一切都不起作用 如何修复它,以便在文件或屏幕上查看调试消息?我使用maven在Eclipse中开发

我正试图建立一个地图缩小作业

它一直运行到完成,但最后会显示奇怪的数据

当我尝试使用system.out.println(“调试数据”)调试它时 它不显示在屏幕上

使用JavaAPI生成外部日志文件,尝试使用log.severe(“日志数据”)或使用log4j logger方法log.info(日志数据)打印到屏幕上也不会起作用/

只有当map reduce作业中出现异常时,我才能看到调试消息,但这一切都不起作用


如何修复它,以便在文件或屏幕上查看调试消息?

我使用maven在Eclipse中开发map/reduce代码,以构建运行时jar并管理依赖关系。一旦在我的机器上安装并运行hadoop以支持HDFS,我就可以在Eclipse中运行和调试代码。这意味着在Eclipse调试透视图中使用断点和其他一切

由于您正在处理大数据,因此跟踪消息的大小可能很大,因此可能会导致问题。考虑“Stuto.Out.PrtLn”风格日志记录选项:

是有用的。
  • 使用计数器(这是一个简单的示例)
  • 使用将日志写入HDFS
计数器和多路输出的最大好处是,您可以通过编程访问它们,在多路输出的情况下,您甚至可以运行map/reduce任务从日志中提取一些统计信息


在生产环境中调试的另一种替代方法是单元测试,MinimorCluster将帮助您在单元测试期间测试map reduce作业。

使用println不是调试。这就是跟踪。也许你没有足够的日志记录()?甚至可以重定向System.out.println(),这可能会有所帮助。Hadoop为自己的作业跟踪日志系统捕获System.out.thx,这似乎足够了,希望现在我能设法解决问题,这是否回答了您的问题?