本文原始碼:GitHub·點這里 || GitEE·點這里
一、Yarn基本結構
Hadoop三大核心組件:分布式檔案系統HDFS、分布式計算框架MapReduce,分布式集群資源調度框架Yarn,Yarn并不是在Hadoop初期就有的,是在Hadoop升級發展才誕生的,典型的Master-Slave架構,

Yarn包括兩個主要行程:資源管理器Resource-Manager,節點管理器Node-Manager,
資源管理器
- 通常部署在獨立的服務器,處理客戶端請求;
- 處理集群中的資源分配和調度管理;
節點管理器
- 管理當前節點上的資源;
- 執行處理各種具體的命令;
- 監視節點資源情況,并上報資源管理器;
ApplicationMaster
- 提供容錯能力,切割資料;
- 給應用程式申請資源并分配任務;
Container
- Yarn中的一個動態資源分配的概念;
- 容器包含了一定量的記憶體、CPU等計算資源;
- 由NodeManager行程啟動和管理;
二、基本執行流程

- 向Yarn提交MapReduce應用程式程式進行調度;
- RM組件回傳資源提交路徑和ApplicationId;
- RM行程NM行程通信,根據集群資源分配容器;
- 將MRAppMaster分發到上面分配的容器上面;
- 運行所需資源提交到HDFS上申請運行MRAppMaster;
- RM經過上述操作把客戶端請求轉換為Task任務;
- 容器中運行的就是Map或者Reduce任務;
- 任務在運行期間和MRAppMaster通信上報狀態;
- 任務執行結束后行程注銷并且釋放容器資源;
MapReduce應用開發遵循Yarn規范的MapReduceApplicationMaster,所以可以在Yarn上運行,其它計算框架如果也遵守該規范,這樣就實作資源的統一調度管理,
三、資源調度器
調度器的基本作用就是根據節點資源的使用情況和作業需求,將任務調度到各個節點上執行,單理解任務佇列的話關鍵的因素有如下幾個:進出方式,優先級,容量等,
Hadoop作業調度器主要有三種:FIFO、CapacityScheduler和FairScheduler,默認的資源調度器是CapacityScheduler,
先進先出調度器
FIFO一種批處理調度器,調度策略先按照作業的優先級高低,再按照到達時間的先后選擇被執行的作業,
容量調度器
CapacityScheduler支持多個佇列,每個佇列可配置一定的資源量,每個佇列采用FIFO調度策略,計算佇列中正在運行的任務書和計算資源的比值,選中比值小相對空閑的佇列,然后安裝作業優先級和提交時間的排序,為了防止同一個用戶的作業獨占佇列中的資源,該調度器會對同一用戶提交的作業所占資源量進行限定,

例如上面圖例,假設100個slot分為三個佇列(ABC),按照如下分配規則:佇列A給20%的資源,佇列B給50%的資源,佇列C給30%的資源;三個佇列都按照任務的先后順序依次執行,上面的job11、job21、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·點這里 | ☆☆☆☆☆ |
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/234190.html
標籤:大數據
上一篇:抖音爬蟲教程,一文講透原理
