MapReduce作業調度
01、公平調度器
公平調度器的目標是讓每個用戶公平共享集群能力。如果只有一個作業在運行,就會得到集群的所有資源。隨著提交的作業越來越多,閑置的任務槽會以“讓每個用戶公平共享集群”這種方式進行分配。某個用戶的耗時短的作業將在合理的時間內完成,即便另一個用戶的長時間作業正在運行而且還在運行過程中。 作業都放在作業池中,在默認情況下,每個用戶都有自己的作業池。提交作業數較多的用戶,不會因此而獲得更多的集群資源。可以用map和reduce的任務槽數來定制作業池的最小容量,也可以設置每個池的權重。 公平調度器支持搶占機制,所以,如果一個池在特定的一段時間內未能公平共享資源,就會中止運行池中得到過多資源的任務,把空出來的任務槽讓給運行資源不足的作業池。 公平調度器是一個後續模塊。要使用它,需要將其JAR文件放在HADOOP的類路徑,即將它從Hadoop的contrib/fairscheduler目錄復制到lib目錄。隨後,像下面這樣設置mapred.jobtracker.taskScheduler屬性: org.apache.hadoop.mapred.FairScheduler
02、容量調度器
集群由很多隊列組成(類似於公平調度器的任務池),這些隊列可能是層次結構的(因此,一個隊列可能是另一個隊列的子隊列),每個隊列被分配有一定的容量。這一點與公平調度器類似,只不過在每個隊列內部,作業根據FIFO方式(考慮優先級)進行調度。本質上,容量調度器允許用戶或組織(使用隊列進行定義)為每個用戶或組織模擬出一個使用FIFO調度策略的獨立MR集群。相比之下,公平調度器(實際上也支持作業池內的FIFO作業調度,使其類似於容量調度器)強制每個池內公平共享,使運行的作業共享池的資源。
轉載請聯系加米谷大數據!
MapReduce作業調度