2013-05-16 108 views
-1

已知在地圖任務中接收單詞並在WordCount示例中歸納那些在reduce任務中的「one」。Hadoop在地圖任務完成前減少

我已經嘗試添加System.out.println以顯示如何在map/reduce任務中運行wordcount示例代碼。當我在jobtracker的網頁上讀取stdout日誌時,我注意到在map任務完成之前執行了一些「總結」工作,並在reduce任務中將這些總和重新映射到map任務中。

即使它不會在單詞計數例子作用的結果,它可以在其它作品的麻煩。(做同樣的工作兩次!)

我修改「mapred.reduce.slowstart.completed.maps 「,但它不起作用。

是否有關於此問題的配置?

+0

雖然我不完全瞭解您的問題,但我建議您閱讀本教程:http://developer.yahoo.com/hadoop/tutorial/module4.html。也許你在談論Combiner。 –

+0

也許你也使用reducer類作爲組合器?合成器在映射器後執行幾次,以減少映射器到縮減器的中間結果。 – darkjh

+0

是的!答案是Combiner。有一行「job.setCombinerClass」我沒有仔細想過,謝謝大家! – natsuyw

回答

0

MapReduce和Hadoop的優勢之一是Nodes在給出足夠的信息時能夠獨立行動。對於映射器和減速器,通常情況下,即使沒有首先完成所有的映射器,Reducer也可以啓動。

該作品不會被複制!

需要在Reducers之前完成的映射器的百分比可以通過使用選項「mapred.reduce.slowstart.completed.maps」或使用新API「mapreduce.job.reduce.slowstart.completedmaps」進行設置。

如果你有合成器,那麼故事是相似的,沒有工作將被複制。但是,由於組合器是在Mapper節點上運行的優化,因此在執行操作時可能會調用幾個組合器(最有可能是一個總和或某種合併)。因此,對於合成器,即使您告訴您的Reducers不要啓動,直到Mappers完成100%,仍可能發生多個合併操作。

相關問題