MapReduce中作業調度器

Hadoop中作業調度器有三種,分別是先進先出調度器(FIFO)、公平調度器(Fair Scheduler)、容量調度器(Capacity Scheduler),默認是FIFO調度器。

先進先出調度器(FIFO)

按照作業提交的順序運行作業,每個作業都會使用整個集羣,因此作業必須等待直到輪到自己運行。這時,如果共享集羣資源就有可能爲多用戶提供大量的資源,但是又如何分配資源以達到最後情況呢。這時候出現了設置作業優先級功能,可以通過mapreduce.job.priority屬性或者Job的setJobPrioity()來設置優先級,可選擇的有:VERY_HIGH,HIGH,NORMAL,LOW,VERY_LOW。但是在FIFO中設置作業優先級,沒有作用,因爲他不支持搶佔,所以高優先級的作業還是要依賴先進入隊列的低優先級作作業執行完畢後執行。

公平調度器(Fair Scheduler)

公平調度器目標是讓每個用戶公平共享集羣的能力。如果只有一個作業,則這個作業會的到集羣中所有的資源,隨着作業數的增多,在MR1中閒置的任務槽會以"每個用戶公平共享集羣"這種方式分配。默認請款下每個用戶都有自己的作業池,但不會因爲作業數多就得到更多的資源(所以,他是以用戶級別爲單位進行資源分配的)。公平調度器支持搶佔式機制,如果一個作業池一段時間未能公平共享集羣資源,就會終止運行池中得到過多的資源的任務,把空任務槽給運行資源不夠的作業池。

在使用公平調度器時,要將其放到hadoop類路徑下,即lib目錄下。然後設置mapreduce.jobtracker.taskshceduler屬性爲:org.apache.hadoop.mapreduce.FariScheduler。如果需要充分發揮其優勢需要讀取官方文檔


容量調度器(Capacity Scheduler)


集羣由多隊列組成,這些隊列可能是層次結構的,爲每個隊列分配一定的容量。在每個隊列內部,根據FIFO方式進行調度。容量調度器允許用戶或組織模擬出一個使用FIFO調度策略的獨立MapReduce集羣。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章