2014-12-19 48 views
0

我有洗牌開始時間的問題。什麼時候洗牌開始在Hadoop

讓你說我有2個mappers和1個​​reducer。每個映射器都將生成輸出map1和map2。 map1和map2存儲在相應datanode的臨時磁盤中。

現在減速機應該等待map1和map2的輸出嗎?換句話說,什麼時候洗牌開始?只要map1完成或它必須等待map2完成?

我正在傾聽在減速機上洗牌的流量,我無法找到任何交通,但控制檯輸出顯示已完成減速的70%(大約)。

14/12/18 17:45:55 INFO mapred.JobClient: map 97% reduce 22% 
14/12/18 17:45:58 INFO mapred.JobClient: map 98% reduce 22% 
14/12/18 17:45:59 INFO mapred.JobClient: map 99% reduce 22% 
14/12/18 17:46:07 INFO mapred.JobClient: map 100% reduce 22% 
14/12/18 17:46:12 INFO mapred.JobClient: map 100% reduce 67% 
14/12/18 17:46:15 INFO mapred.JobClient: map 100% reduce 71% 

我看到洗牌後的交通流量進入此點後。

我在這裏有點困惑。減速機約70%的工作是什麼? !

感謝

+0

看看這個SF問題:http://stackoverflow.com/questions/11672676/when-do-reduce-tasks-start-in-hadoop – Ashrith 2014-12-19 06:03:17

回答

1

在你減速。首先33%是複製階段,那麼接下來的33%是洗牌和排序階段,然後最後的33%是你的實際減少操作。

我會嘗試解釋一個簡單的流程: 地圖任務完成後,地圖任務的輸出將被複制到需要發生減少任務的地方。 Map和Reduce不會發生在同一臺機器上。 當某些mapper完成時,即使在完整映射階段發生之前,您也會注意到reduce階段的一些增量。它是那些完成的map任務輸出的數據複製。完成的地圖任務現在可以在減少任務發生的地方進行復制。只有在完整地圖階段結束後才能開始排序。這是因爲輸出鍵需要排序..並且直到您擁有排序才能排序完整的按鍵空間..對.. ??

+0

謝謝你。什麼是33%的複製階段?複製到哪裏?只有在所有映射完成後纔開始混洗? – navaz 2014-12-19 01:22:33

+0

「複製階段」是指將輸出數據從映射器移動到適當的縮減器。根據您的配置,這將在映射器接近完成時開始。在映射器完成後,隨機排序然後開始。 – Nonnib 2014-12-19 08:55:13

+0

我在複製和混洗階段有點困惑。 @Fraz我認爲洗牌階段不過是將數據從映射器移動到還原器。如果是這樣,最初的33%是什麼? – navaz 2014-12-19 15:14:43

0

中清楚地解釋了混洗和排序階段一起被稱爲「複製」階段。排序在RAM中完成。如果由於內存不足而需要外部排序,則會發生合併排序。所以我們編寫排序/合併。

實際上,每個Map任務有3個階段:Map,Partitioning,Sort/Merge。每個Reduce任務有3個階段:混洗,排序/合併,減少。

在Hadoop中,當生成所有地圖任務輸出的5%時,隨機階段開始。在此策略中,儘管洗牌階段較早開始以減少作業執行時間,但它會導致重複合併和減少更多磁盤訪問,這又會導致作業執行時間延長。

相關問題