2012-01-31 31 views
0

我感興趣的標杆在MapReduce的執行的特定階段Hadoop集羣。也就是說,我希望在地圖階段,隨機播放階段和縮小階段之間進行乾淨的分離。乾淨地分離的Hadoop階段

有沒有辦法從洗牌或減少,直到所有洗牌完成後減少任何之前的所有地圖的任務已經完成,並剋制不要?我不關心對執行時間的影響,因爲我只對這些階段的資源消耗感興趣。

我看到了另一個SO發佈有關對不應當減少和mapred.tasktracker.map.tasks.maximum0上,不應該映射節點的節點設置mapred.tasktracker.reduce.tasks.maximum0分離特定節點上的任務,但在這種情況下,地圖和減少任務仍然運行同時,我也無法使用我的完整羣集的每個階段。

謝謝!

回答

1

在所有地圖任務完成之前,是否有辦法避免混洗或減少任何東西,並且在所有洗牌完成之前避免減少任何東西?

mapreduce.job.reduce.slowstart.completedmaps被設定爲0.05,並定義爲Fraction of the number of maps in the job which should be complete before reduces are scheduled for the job.

上述參數設置爲1和混洗將不會啓動,直到所有的地圖任務的執行被完成。

+0

正是我一直在尋找。謝謝! – cvp 2012-02-01 20:56:34

+0

或者我可能說得太快......儘管事實上,它在排序或減少之前都會延遲,直到所有地圖都完全結束,但它仍然執行復制步驟。有沒有辦法阻止它呢? – cvp 2012-02-01 21:55:54

+0

我不認爲洗牌(複製步驟)也會在沒有完成所有地圖任務的情況下啓動,因爲尚未安排減少任務,因此通過將提及的屬性設置爲1來啓動洗牌(複製步驟)。 – 2012-02-02 03:36:18