2013-10-07 41 views
0

我有一個讀取文件的MapReduce作業,然後收集所有不超過5個字符的單詞,並以第一個字母作爲關鍵字以大寫字母開頭。我在不使用組合器的情況下兩次運行了這個工作,而第二次使用了組合器。我比較了執行時間,我注意到使用組合器增加了執行時間。我想知道是什麼原因導致時間增加,使用組合器時始終如此?MapReduce與組合器的執行時間

謝謝

回答

1

正如其名稱所暗示自己當有任何可能性,結合組合,才應使用。一般來說,它應該應用於交換函數(a.b = b.a)和關聯{a。(b.c)=(a.b).c}。但這只是謹慎,沒有硬性規定,它必須是交換性和聯想性的。組合器可能只能操作你的鍵和值的一個子集,或者根本不能執行。所以如果你的mapper輸出中重複鍵的數量非常少,那麼有時使用組合器可能會適得其反,反而成爲無用的負擔。所以只有在有足夠的組合範圍時才使用組合器。

從查林的「的Hadoop在行動」引用:

「A組合並不一定提高性能,您應該 監視作業的行爲,看是否記錄數由合成器輸出 是有意義不到的記錄,還原會 數量必須證明運行 組合的額外的執行時間。「

因此,你的情況有可能是子集數s可以組合在一起的比例較小,因此運行組合器的開銷最終會增加執行時間。我的文章here