本文源碼:GitHub·點這裏 || GitEE·點這裏java
Hadoop三大核心組件:分佈式文件系統HDFS、分佈式計算框架MapReduce,分佈式集羣資源調度框架Yarn。Yarn並非在Hadoop初期就有的,是在Hadoop升級發展才誕生的,典型的Master-Slave架構。git
Yarn包括兩個主要進程:資源管理器Resource-Manager,節點管理器Node-Manager。github
資源管理器算法
節點管理器spring
ApplicationMaster編程
Container設計模式
MapReduce應用開發遵循Yarn規範的MapReduceApplicationMaster,因此能夠在Yarn上運行,其它計算框架若是也遵照該規範,這樣就實現資源的統一調度管理。服務器
調度器的基本做用就是根據節點資源的使用狀況和做業需求,將任務調度到各個節點上執行。單理解任務隊列的話關鍵的因素有以下幾個:進出方式,優先級,容量等。數據結構
Hadoop做業調度器主要有三種:FIFO、CapacityScheduler和FairScheduler,默認的資源調度器是CapacityScheduler。架構
先進先出調度器
FIFO一種批處理調度器,調度策略先按照做業的優先級高低,再按照到達時間的前後選擇被執行的做業。
容量調度器
CapacityScheduler支持多個隊列,每一個隊列可配置必定的資源量,每一個隊列採用FIFO調度策略,計算隊列中正在運行的任務書和計算資源的比值,選中比值小相對空閒的隊列,而後安裝做業優先級和提交時間的排序。爲了防止同一個用戶的做業獨佔隊列中的資源,該調度器會對同一用戶提交的做業所佔資源量進行限定。
例如上面圖例,假設100個slot分爲三個隊列(ABC),按照以下分配規則:隊列A給20%的資源,隊列B給50%的資源,隊列C給30%的資源;三個隊列都按照任務的前後順序依次執行,上面的job十一、job2一、job31是最早運行,也是並行運行。
公平調度器
和容量調度器原理相似,支持多隊列多用戶,每一個隊列中的資源量能夠配置,同一隊列中的做業公平共享隊列中全部資源。
好比有三個隊列(ABC),每一個隊列中的job按照優先級分配資源,優先級越高分配的資源越多,可是每一個job都會分配到資源以確保公平。在資源有限的狀況下,每一個job理想狀況下得到的計算資源與實際得到的計算資源存在一種差距,,這個差距就叫作缺額。在同一個隊列中,job的資源缺額越大,越先得到資源優先執行,做業是按照缺額的高低來前後執行的。
GitHub·地址 https://github.com/cicadasmile/big-data-parent GitEE·地址 https://gitee.com/cicadasmile/big-data-parent
推薦閱讀:編程體系整理
序號 | 項目名稱 | GitHub地址 | GitEE地址 | 推薦指數 |
---|---|---|---|---|
01 | Java描述設計模式,算法,數據結構 | GitHub·點這裏 | GitEE·點這裏 | ☆☆☆☆☆ |
02 | Java基礎、併發、面向對象、Web開發 | GitHub·點這裏 | GitEE·點這裏 | ☆☆☆☆ |
03 | SpringCloud微服務基礎組件案例詳解 | GitHub·點這裏 | GitEE·點這裏 | ☆☆☆ |
04 | SpringCloud微服務架構實戰綜合案例 | GitHub·點這裏 | GitEE·點這裏 | ☆☆☆☆☆ |
05 | SpringBoot框架基礎應用入門到進階 | GitHub·點這裏 | GitEE·點這裏 | ☆☆☆☆ |
06 | SpringBoot框架整合開發經常使用中間件 | GitHub·點這裏 | GitEE·點這裏 | ☆☆☆☆☆ |
07 | 數據管理、分佈式、架構設計基礎案例 | GitHub·點這裏 | GitEE·點這裏 | ☆☆☆☆☆ |
08 | 大數據系列、存儲、組件、計算等框架 | GitHub·點這裏 | GitEE·點這裏 | ☆☆☆☆☆ |