2011-06-03 66 views
0

我試圖運行Fair Scheduler,但它並未將Map任務分配給僅有一個作業正在運行的某些節點。我的理解是,公平計劃將使用conf插槽限制,除非存在多個作業,此時計算公平性計算。我也嘗試將所有隊列設置爲fair-scheduler.xml中的FIFO,但我得到了相同的結果。Hadoop Fair Scheduler未將任務分配給某些節點

我已經在所有mapred-site.xml文件中設置了調度程序mapreduce.jobtracker.taskscheduler參數(儘管我相信只有JobTracker需要它),並且一些節點在接收和運行Map任務時沒有問題。然而,其他節點要麼從未獲得任何Map任務,要麼獲得一輪Map任務(即所有的槽都被填充一次),然後再也沒有獲得任何。

我試過這個作爲開發我自己的LoadManager的先決條件,所以我繼續將調試LoadManager放在一起。從日誌消息中,我可以看到問題節點不斷請求Map任務,並且他們的插槽是空的。但是,他們從未被分配任何。

所有節點都與默認調度程序完美配合。當我啓用Fair Scheduler時,我剛開始遇到這個問題。

任何想法?有人有這個工作,並採取了我已經錯過了一個步驟?

編輯:值得注意的是公平調度程序的Web用戶界面頁面指出正確的公平份額計數,但運行列總是少。我使用默認的每個用戶池,一次只有1個用戶和1個作業。

回答

3

原因是未記錄的mapred.fairscheduler.locality.delay參數。有問題的節點位於不同的機架上,HDFS被禁用,這些節點上的所有任務都是非機架本地的。因此,由於公平調度程序的延遲調度算法(描述爲here),導致了大量延遲。

+0

呃,404上的鏈接。 – dfrankow 2013-02-15 22:52:31

+0

@dfrankow:已修復,通過google找到它。 – BigChief 2013-02-15 23:45:53

相關問題