我正在尝试构建一个地图缩减作业。
它运行完成,但最后呈现奇怪的数据。
当我尝试使用 system.out.println("debug data") 调试它时
它没有显示在屏幕上。
使用 java API 生成外部日志文件,尝试使用 log.severe("log data") 或使用 log4j 记录器方法 log.info(log data) 打印到屏幕都不起作用/
没有任何效果,我看到调试消息的唯一时间是当 MapReduce 作业出现异常时。
如何修复它以便我可以在文件或屏幕上看到调试消息?
由于您正在处理大数据,因此跟踪消息的大小可能会很大,因此可能会导致问题。考虑“system.out.println”样式日志记录的替代方案很有用:
- 使用计数器(here http://www.philippeadjiman.com/blog/2010/01/07/hadoop-tutorial-series-issue-3-counters-in-action/是一个简单的例子)
- 使用以下命令将日志写入 HDFS多重输出 https://hadoop.apache.org/docs/r2.6.3/api/org/apache/hadoop/mapreduce/lib/output/MultipleOutputs.html
关于计数器和 MultipleOutputs 最好的事情 - 您可以通过编程方式访问它们,如果是 MultipleOutputs,您甚至可以运行 map/reduce 任务以从日志中提取一些统计信息。
在生产环境中调试的另一种替代方法是单元测试,MiniMRCluster 将帮助您在单元测试期间测试您的 Map-Reduce 作业。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)