2017-04-13 124 views
0

已經有很多像這樣的問題,有相互矛盾的答案。我還在文學和博客中發現了相互矛盾的言論。在本書中,Hadoop是權威指南,它說當Hadoop MapReduce運行一個組合器時的確切來源

Hadoop不提供保證多少次它會爲特定的映射輸出記錄調用[組合器](如果有的話)。換句話說,調用組合功能爲零,一個或多個時間應產生相同的輸出從減速

的答案在這裏過類似的問題On what basis mapreduce framework decides whether to launch a combiner or not建議,一個組合,如果定義了,總是會被調用一次爲MapOutputBuffer需要刷新。

可能存在邊界情況,其中映射器僅發射一次,這意味着組合器即使已定義也不會運行。

我的問題是:這個問題的答案是否有確切的來源?我當然搜索了Hadoop文檔,但找不到任何東西。

+0

難道你已經擁有了嗎?來自權威指南的摘錄很好地解釋了它。 – franklinsijo

+0

這只是它與我在別處讀過的東西相矛盾(例如,鏈接的答案)是那些說組合器保證錯誤的東西? – Kevin

回答

0

Hadoop框架旨在爲用戶/開發人員提供一個簡單的界面,以開發在分佈式環境中運行的代碼,而無需用戶/開發人員思考/處理分佈式系統的複雜性。

要回答你的問題,你可以閱讀具有基於條件調用組合器的邏輯的源代碼。

由於大部分的Hadoop屬性是可配置的,因此行爲和性能取決於你如何配置的屬性。

希望這回答你的問題。

+0

感謝Pradeep,這是答案的一部分,但是當組合器在溢出文件上運行時,這不是第一次運行。當數據從內存寫入溢出文件時也會運行。不過謝謝你指點我的源代碼。這是一個真正的幫助。 – Kevin

+0

@kevin您的評論對我不明確。當你說「當組合器在溢出文件上運行時,這意味着什麼?這不是第一次運行,當數據從內存寫入溢出文件時,它也會運行。」你還在找什麼?如果您對回答感到滿意,您可以高舉或接受 – pradeep

+0

當數據從內存寫入溢出文件時運行組合器,但minSpillsForCombine屬性控制溢出文件內容是否在額外時間內通過組合器運行。因此,即使溢出次數少於minSpillsForCombine,組合器仍可以運行。因此,我認爲你的第二個要點是不正確的。我從權威指南的第209頁開始。 – Kevin

相關問題