2013-12-11 110 views
0

我有4個節點,每個節點有24個CPU和7個磁盤。在我從本地500GB文件複製的每個節點上。所以現在我有4個文件。每個文件的塊位於單個節點上,分佈在所有磁盤上。hadoop的最佳配置?

什麼是Hadoop的mapreduce這個設置的最佳配置(我只用於這些文件)?我試過將mapred.map.tasks設置爲96,但hadoop只創建4個任務(每個節點一個)。

+0

這個問題似乎已經在hadoop郵件列表上得到解答。請提供最終答案並接受它。 –

回答

0

您正在爲您正在嘗試執行的操作設置錯誤的配置參數。您需要改爲mapred.tasktracker.map.tasks.maximum。你所設定的是一份工作的地圖任務的數量......在大多數情況下,你不應該修改它。 Hadoop默認將mapred.map.tasks設置爲塊的數量,所以只需保留它即可。

一下添加到mapred-site.xml

<property> 
    <name>mapred.tasktracker.map.tasks.maximum</name> 
    <value>24</value> 
</property> 

改變之後,您需要重新啓動的TaskTracker。 要驗證您是否進行了更改,請查看JobTracker Web界面。你應該看到頂部附近的東西,告訴你有多少地圖插槽已打開。看到它是96,而不是16.


資源分配的工作方式是您的MapReduce集羣有許多地圖插槽和減少插槽。作業運行時,作業將消耗地圖插槽。如果作業具有比地圖插槽更多的地圖任務(非常典型),那麼您的地圖任務將排在第一個運行的地圖任務之後並稍後運行。

這就是你看到每個節點每個獲得4個任務。它最終將貫穿所有這些。但是,你說得對,24核心(我認爲是2個超線程CPU)和7個磁盤,你想要更多的插槽。我聽說每個磁盤有1個經驗法則,每個核心有1個,每個核心有1個(有超線程),但是沒有真正的科學背景,它完全依賴於工作負載。如果你真的想獲得最佳性能,只需嘗試不同的值。我建議每個節點的值在10到24之間。