2013-07-24 24 views
0

我正在執行多個PIG腳本說script1,script2,script3,script4。在這個腳本中,腳本1獨立執行,腳本2,3,4在腳本執行後並行執行。 我給大小7-8 GB的輸入文件。因此,在執行script1之後,我觀察到,不是並行執行腳本2,3,4,而是僅執行script2,因爲它正在消耗33-35個映射器。其他仍然在隊列中(意味着script3,4沒有得到映射器分配)。由於這太多的時間需要執行所有腳本。如何在Hadoop中將特定數量的映射器分配給多個作業?

那麼,我的想法是,如果我能夠映射器的限制設置爲每個腳本則可能是時間要求來執行無線本地環路少,因爲所有的腳本可能會映射器的分配。

那麼,有沒有辦法來分配映射器的特定數量的多個腳本?

回答

0

如果(根據你的核心/節點和磁盤/節點值)地圖數設置正確,然後具有1個作業消耗所有的地圖或具有N作業耗時MapNumber/N地圖將具有相同的結果。但如果你真的想在作業量分配你的地圖,你可以設置每個作業圖號(mapreduce.job.mapsmapred-site.xml我認爲)。

考慮你仍然有免費地圖插槽,還有一些配置,以使工作並行執行喜歡這裏討論:Running jobs parallely in hadoop

您還可以設置一個地圖數量爲每個作業(即使我不知道它確實有效)如果您提供了一個job.xml,您可以在其中將您的地圖編號設置爲您的hadoop命令。

0

你可以在你的腳本的開頭添加以下行:

集mapred.map.tasks 8

,這將讓所有的腳本來同時運行。

請注意,如果您的機器飽和,這將不會影響所有腳本運行多長時間

相關問題