
182
|
第七章:資源管理
FIFO
排程器
先進先出(
first in, first out
,簡稱
FIFO
)排程器是
Hadoop
預設的排程器。一如它的
名稱,它使用一種簡單的「先來先服務(
first come, first served
)」演算法來進行工作
的排程。舉例來說,依序提交兩個任務,
A
跟
B
,所有在任務
A
中的
map
工作,將會
比任一個任務
B
的工作,還要早被執行。當任務
A
的
map
工作全數完成後,任務
B
的
map
工作才會被排程(如圖
7-1
所示)。這種作法十分簡單,不過會遇到資源壟斷的
問題。
圖
7-1
單一個
FIFO
佇列
假設我們的駐地資料科學家
Jane
(珍)提交了一個任務,想要從上個月大型購物網站
的點閱資料中,找出點閱率最高的產品頁面。每天的網路流量超過
1TB
,這個查詢須
掃描超過
30TB
的資料,約莫用了
245,760
個
map
工作,若假設
HDFS
的區塊大小是
128MB
(
30TB
除以
128MB
的區塊大小,就能得到
map
工作的個數)。一座有
400
個
節點的叢集,每個節點配置
10
個
map
插槽,可以同時處理
4000
個
map
工作。為了完
成這個查詢,約
25
萬個工作一次只有很少的一部份會被執行。後來提交的任何任務必
須要等相當長的時間,才能等到排程。從外表看起來,這個任務好像沒有任何進展,
消費者可能會覺得很挫敗,對於重要的自動化任務而言也違反了服務層級協議(
SLA
)。
FIFO
排程器支援五種層級的任務優先順位(
job prioritization
),由最低到最高依序為:
very low