5

我试图建立一个地图减少工作。

它运行到完成,但最后会出现奇怪的数据。

当我尝试使用 system.out.println("debug data") 对其进行调试时,它不会显示在屏幕上。

使用 java API 生成外部日志文件,尝试使用 log.severe("log data") 或使用 log4j 记录器方法 log.info(log data) 打印到屏幕也不起作用/

我唯一看到我的调试消息时没有任何效果是在 map reduce 作业中出现异常时。

如何修复它以便我可以在文件或屏幕上看到我的调试消息?

4

2 回答 2

1

由于您正在处理大数据,因此跟踪消息的大小可能很大,因此可能会导致问题。考虑“system.out.println”样式日志的替代方案很有用:

Counters 和 MultipleOutputs 最好的地方 - 您可以通过编程方式访问它们,如果是 MultipleOutputs,您甚至可以运行 map/reduce 任务以从日志中提取一些统计信息。

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

于 2012-10-03T12:05:00.013 回答
0

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

于 2012-10-02T18:37:05.863 回答