2013-02-06 52 views
0

我需要一些幫助,在我的map-reduce代碼中。 代碼運行在eclipse和獨立模式下是完美的,但是當我打包代碼並嘗試在僞分佈式模式下本地運行時,輸出結果並不如我所期望的那樣。mapreduce程序不能在分佈式模式下生成所需的輸出

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 

獨立模式下運行相同的代碼可以在任何一個可以告訴我什麼是錯..?

我試圖建立.jar文件爲蝕兩者的方式 - >出口 - >可運行罐和形式的終端,以及(javac的-classpath Hadoop的芯 - 1.0.4 -d類mapredcode.java & &罐子-cvf mapredcode.jar -C類/。)

以及如何調試這個..

+0

爲什麼不嘗試在Reducer類的不同位置嘗試系統化值。至少你會知道你錯過了哪些數據。 – aa8y

+1

顯示一些代碼... –

回答

1

您使用的是combiner()方法? 如果是。那麼合成器的o/p與映射器的一樣?

因爲在Hadoop中,Combiner運行在Hadoop本身的處置上,並且在您的情況下可能不會在僞disratibuted模式下運行。 組合器本身不過是用於降低網絡流量的縮減器。

而代碼應該是這樣的,即使Combiner沒有運行,reducer應該從映射程序獲得預期的格式。

希望它有幫助。

相關問題