2013-11-15 53 views
0

我是一個初學者hadoop &當我運行hadoop工作我注意到進度日誌顯示地圖80%減少25%。我對map reduce的理解是mappers會產生一堆中間值。在產生輸出的映射器存在洗牌/中間對&這些值被髮送以減少工作。有人可以向我解釋一下map/reduce如何並行工作。如何映射並減少在parllel運行

回答

2

映射器的輸出必須複製到相應的reducer節點。這被稱爲洗牌過程。即使在所有映射器都完成之前,這可以開始,因爲哪個鍵的決定取決於哪個縮減器僅取決於映射器的輸出鍵。所以你看到的25%的進展是由於洗牌階段。

洗牌後,有一個分類階段,然後是減少階段。除非所有映射器都完成,否則排序和減少不會發生。由於在映射器完成之前可能會發生混洗,因此在映射器完成之前可以最多減少33.33%。這是因爲默認的apache實現考慮了洗牌,分類和減少每個佔用了33.33%的時間。

+1

通過在'mapred-site.xml'中設置'mapreduce.job.reduce.slowstart.completedmaps',您可以控制任何減速器啓動前需要完成的映射器比例(百分比)。 –