作業排程器 早期的作業排程使用FIFO(First In First Out)排程算法,可以設定屬性mapred.job.priority或者JobClient的setJobPriority( )方法來設定作業優先級,可配置的優先級有5個:VERY_HIGH, HIGH, NORMAL, LOW, VERY_LOW。 除了FIFO排程器之外,還有兩個多使用者排程器,分别是Fair Scheduler和Capacity Scheduler。
1. Fair Scheduler(讓每個使用者公平地共享叢集資源)
- 公平排程器以資源池來組織作業,預設情況下,每個使用者都有一個資源池,每個資源池的資源相等。在同一個資源池内,所有的作業共享該資源池的資源。
- 當資源池所需的資源小于它所擁有的資源時,額外的資源會在其他資源池之間進行切分。
- 公平排程器保證最小共享資源,當一個資源池有作業在運作時,它至少能擷取最小共享資源。
- 資源池可以被設定權重。
- 公平排程器支援搶占,可以中止得到過多資源的任務,以便把資源分給在特定的一段時間内未得到公平資源共享的資源池。
2. Capacity Scheduler(資源按比例配置設定給各個隊列)
- 叢集由很多隊列組成,叢集資源按比例配置設定給各個隊列。
- 空閑的資源會配置設定給未達到資源使用上限的隊列。
- 支援優先級,預設使用FIFO排程算法。
- 添加各種嚴格限制,防止個别使用者或隊列獨占資源。