MapReduce是hadoop提供一個可進行分佈式計算的框架或者平臺,顯然這個平臺是多用戶的,每一個合法的用戶能夠向這個平臺提交做業,那麼這就帶來一個問題,就是做業調度。框架
任何調度策略都考慮本身平臺調度須要權衡的幾個維度,例如操做系統中的進程調度,他須要考慮的維度就是資源(CPU)的最大利用率(吞吐)和實時性,操做系統對實時性的要求很高,因此操做系統每每採用基於優先級的、可搶佔式的調度策略,而且賦予IO密集型(相對於計算密集型)的進程較高的優先級,扯的有點遠。分佈式
回到hadoop平臺,其實MapReduce的做業調度並無很高的實時性的要求,本着最大吞吐的原則去設計的,因此MapReduce默認採用的調度策略是FIFO(基於優先級隊列實現的FIFO,不是純粹的FIFO,這樣每次h),這種策略顯然不是可搶佔式的調度,因此帶來的問題就是高優先級的任務會被先前已經在運行而且還要運行好久的低優先級的做業給堵塞住。oop
別的選擇:Fair Scheduler 和 Capacity Scheduler操作系統
未完待續~設計