2016-08-04 47 views
1

閱讀關於MapReduce的論文,並提到將所有中間鍵分組在一起。在MapReduce中,如何在多臺機器上執行相同的reduce任務?

當減少工作人員已讀取所有 中間數據時,它使所有的 出現相同的密鑰的被組合在一起通過中間鍵進行排序。排序是 需要,因爲通常很多不同的鍵映射到相同的減少 任務。如果中間數據量太大,無法在 存儲器,外部排序是使用

有沒有相同的reduce任務提到在多臺機器被exectued。

當reduce任務完成時,reduce worker會自動將其臨時輸出文件重命名爲最終輸出文件。如果在多臺機器上執行相同的減少 任務,則會爲相同的最終輸出文件執行多個重命名調用 。

如果將相同的鍵組合在一起,是不是會成爲一個減少工作人員運行的減少任務?同一個reduce任務如何在多臺機器上運行?

回答

1

。如果在多臺機器上執行相同的reduce任務,則會爲相同的最終輸出文件執行多個重命名調用。

這可能是由於推測執行。

如果一個特定的Map或Reduce任務花費很長時間,Hadoop Framework會在不同的機器上啓動相同的任務,推測長時間運行的任務存在一些問題。長時間運行任務的緩慢可能是由網絡故障,繁忙的機器或硬件故障造成的。

你可以找到關於這個概念在這個SE問題的詳細信息:

Hadoop speculative task execution

從Apache文檔page @任務副作用文件:

可能有問題,有兩個實例同一臺Mapper或Reducer同時運行(例如,推測性任務)試圖打開和/或寫入FileSystem上的同一文件(路徑)。因此,應用程序編寫者將不得不爲每個任務選擇唯一的名稱(使用嘗試者,比如說attempt_200709221812_0001_m_000000_0),而不僅僅是每個任務。

爲了避免這些問題的MapReduce框架,當OutputCommitter是FileOutputCommitter,保持通過${mapreduce.task.output.dir}對任務的地方,嘗試的輸出被存儲在文件系統的每個任務嘗試訪問的特殊${mapreduce.output.fileoutputformat.outputdir}/_temporary/_${taskid}子目錄。

1

我想你錯了。這意味着如果單個reduce任務足夠大,那麼不是在單臺機器上處理它,而是在多臺機器上處理它,然後從機器輸出文件被重命名,彙總並顯示爲單個輸出文件。

多個reduce過程可以在同一個節點上發生。如果與其他節點相比,處理減少任務的速度足夠快,則該節點的速度取決於該節點的速度,如果是,則再次使用另一個減少任務進行調用。

欲瞭解更多信息,請參閱 https://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html 本文有話題「多少減少?」我認爲這將解決您的查詢。

我希望我能夠解決您的查詢。

+0

Same Reduce任務可以在多臺機器上運行。 –

相關問題