mapreduce程序在分布式模式下不生成所需的输出

时间:2013-02-06 12:20:04

标签: hadoop maps mapreduce

我在map-reduce代码中需要一些帮助。 代码在eclipse和独立模式下运行完美,但是当我打包代码并尝试在伪分布式模式下本地运行时,输出并不像我期望的那样。

Map input records = 11
Map input records = 11

Reduce input records = 11
Reduce output records = 0

这些是我得到的价值。

当我在eclipse或独立模式下使用相同的配置和运行时运行相同的代码时输入文件

Map input records = 11
Map output records = 11

Reduce input records = 11
Reduce output records = 4

任何人都可以告诉我什么是错的...... ??

我尝试了为eclipse构建.jar文件的两种方法 - >出口 - >可运行的jar和表单终端(javac -classpath hadoop-core-1.0.4 -d classes mapredcode.java&& jar -cvf mapredcode.jar -C classes /。)

我该如何调试..

1 个答案:

答案 0 :(得分:1)

您使用的是combiner()方法吗? 如果是的话。那么组合器的o / p与映射器的o / p相同吗?

因为在Hadoop中,Combiner是由Hadoop本身运行的,并且在您的情况下可能无法以伪分辨模式运行。 组合器本身只是一个用于降低网络流量的reducer。

代码应该是这样的,即使Combiner没有运行,reducer也应该从mapper中获得预期的格式。

希望它有所帮助。