(1)預設的排程器fifo
hadoop中預設的排程器,它先按照作業的優先順序高低,再按照到達時間的先後選擇被執行的作業。
(2) 計算能力排程器capacity scheduler
支援多個佇列,每個佇列可配置一定的資源量,每個佇列採用fifo排程策略,為了防止同乙個使用者的作業獨佔佇列中的資源,該排程器會對同一使用者提交的作業所佔資源量進行限定。排程時,首先按以下策略選擇乙個合適佇列:計算每個佇列中正在執行的任務數與其應該分得的計算資源之間的比值,選擇乙個該比值最小的佇列;然後按以下策略選擇該佇列中乙個作業:按照作業優先順序和提交時間順序選擇,同時考慮使用者資源量限制和記憶體限制。
(3)公平排程器fair scheduler
同計算能力排程器類似,支援多佇列多使用者,每個佇列中的資源量可以配置,同一佇列中的作業公平共享佇列中所有資源,具體演算法參見我的博文《hadoop公平排程器演算法解析》
實際上,hadoop的排程器遠不止以上三種,最近,出現了很多針對新型應用的hadoop排程器。
(4)適用於異構集群的排程器late
現有的hadoop排程器都是建立在同構集群的假設前提下,具體假設如下:
1)集群中各個節點的效能完全一樣
2)對於reduce task,它的三個階段:copy、sort和reduce,用時各佔1/3
3)同一job的同型別的task是一批一批完成的,他們用時基本一樣。
現有的hadoop排程器存在較大缺陷,主要體現在探測落後任務的演算法上:如果乙個task的進度落後於同型別task進度的20%,則把該task當做落後任務(這種任務決定了job的完成時間,需盡量縮短它的執行時間),從而為它啟動乙個備份任務(speculative task)。如果集群異構的,對於同乙個task,即使是在相同節點上的執行時間也會有較大差別,因而在異構集群中很容易產生大量的備份任務。
(5)適用於實時作業的排程器deadline scheduler和constraint-based scheduler
這種排程器主要用於有時間限制的作業(deadline job),即給作業乙個deadline時間,讓它在該時間內完成。實際上,這類排程器分為兩種,軟實時(允許作業有一定的超時)作業排程器和硬實時(作業必須嚴格按時完成)作業排程器。
deadline scheduler(參考資料[5])主要針對的是軟實時作業,該排程器根據作業的執行進度和剩餘時間動態調整作業獲得的資源量,以便作業盡可能的在deadline時間內完成。
constraint-based scheduler(參考資料[6])主要針對的是硬實時作業,該排程器根據作業的deadline和當前系統中的實時作業運**況,**新提交的實時作業能不能在deadline時間內完成,如果不能,則將作業反饋給使用者,讓他重調整作業的deadline。
Hadoop的排程器總結
隨著mapreduce的流行,其開源實現hadoop也變得越來越受推崇。在hadoop系統中,有乙個元件非常重要,那就是排程器,它的作用是將系統中空閒的資源按一定策略分配給作業。在hadoop中,排程器是乙個可插拔的模組,使用者可以根據自己的實際應用要求設計排程器。hadoop中常見的排程器有三種,...
Hadoop的排程器
隨著mapreduce的流行,其開源實現hadoop也變得越來越受推崇。在hadoop系統中,有乙個元件非常重要,那就是排程器,它的作用是將系統中空閒的資源按一定策略分配給作業。在hadoop中,排程器是乙個可插拔的模組,使用者可以根據自己的實際應用要求設計排程器。hadoop中常見的排程器有三種,...
Hadoop的排程器
隨著mapreduce的流行,其開源實現hadoop也變得越來越受推崇。在hadoop系統中,有乙個元件非常重要,那就是排程器,它的作用是將系統中空閒的資源按一定策略分配給作業。在hadoop中,排程器是乙個可插拔的模組,使用者可以根據自己的實際應用要求設計排程器。hadoop中常見的排程器有三種,...