
MapReduce
排程器
|
197
容量排程器
最後,容量排程器(
Capacity Scheduler
,有時會簡稱為
cap scheduler
)是預設
FIFO
排程器另一個常見的替代方案。一如公平排程器,容量排程器是為了讓多個群組可以
共享單一個大型叢集而設計的,而它能維持某種資源分配的保證。最開始是由
Yahoo!
的
Hadoop
團隊開發,容量排程器已知在一些大型的
Hadoop
叢集上做過壓力測試。
公平排程器與容量排程器兩者主要的差異,在於工作排程演算法背後的哲學。此外,
也有一些在功能上的差異,導致有人會因而選擇其中的某一個,後文將特別標明。一
開始,容量排程器是一個比較簡單,而且在某些方面,是比公平排程器更具確認性
(
deterministic
)的排程器。系統管理者設定一個或以上的佇列,每個都有
容量
(
capacity
)-叢集插槽總容量的預定比例。這有點類似公平排程器的最小分享,然而
它是預留給佇列,而且在沒有需求量時不會送出。在
TaskTracker
傳送心跳訊號期間,
插槽會分配給佇列(本質上,可以類比成公平排程器的資源池),而最餓的佇列會先
取得插槽。佇列飢餓程度的量測方法是根據佇列執行中的工作數量,除以佇列的容量,
換句話說,也就是使用率。其他超出所有佇列容量總和的額外插槽,則會視需求,由
排程器自由分配給任意佇列。
在同一個佇列中,同一個使用者提交的任務,是以
FIFO
的順序排列。很不幸地,這也
就代表,在同一個佇列中,由同一個使用者所提交的兩個任務,會排擠(
block
)對方,
即使在不同的佇列之間 ...