Hadoop框架:Yarn基本结构和运行原理
本文源碼:GitHub·點這里 || GitEE·點這里
一、Yarn基本結(jié)構(gòu)
Hadoop三大核心組件:分布式文件系統(tǒng)HDFS、分布式計算框架MapReduce,分布式集群資源調(diào)度框架Yarn。Yarn并不是在Hadoop初期就有的,是在Hadoop升級發(fā)展才誕生的,典型的Master-Slave架構(gòu)。
Yarn包括兩個主要進程:資源管理器Resource-Manager,節(jié)點管理器Node-Manager。
資源管理器
- 通常部署在獨立的服務(wù)器,處理客戶端請求;
- 處理集群中的資源分配和調(diào)度管理;
節(jié)點管理器
- 管理當(dāng)前節(jié)點上的資源;
- 執(zhí)行處理各種具體的命令;
- 監(jiān)視節(jié)點資源情況,并上報資源管理器;
ApplicationMaster
- 提供容錯能力,切割數(shù)據(jù);
- 給應(yīng)用程序申請資源并分配任務(wù);
Container
- Yarn中的一個動態(tài)資源分配的概念;
- 容器包含了一定量的內(nèi)存、CPU等計算資源;
- 由NodeManager進程啟動和管理;
二、基本執(zhí)行流程
- 向Yarn提交MapReduce應(yīng)用程序程序進行調(diào)度;
- RM組件返回資源提交路徑和ApplicationId;
- RM進程NM進程通信,根據(jù)集群資源分配容器;
- 將MRAppMaster分發(fā)到上面分配的容器上面;
- 運行所需資源提交到HDFS上申請運行MRAppMaster;
- RM經(jīng)過上述操作把客戶端請求轉(zhuǎn)換為Task任務(wù);
- 容器中運行的就是Map或者Reduce任務(wù);
- 任務(wù)在運行期間和MRAppMaster通信上報狀態(tài);
- 任務(wù)執(zhí)行結(jié)束后進程注銷并且釋放容器資源;
MapReduce應(yīng)用開發(fā)遵循Yarn規(guī)范的MapReduceApplicationMaster,所以可以在Yarn上運行,其它計算框架如果也遵守該規(guī)范,這樣就實現(xiàn)資源的統(tǒng)一調(diào)度管理。
三、資源調(diào)度器
調(diào)度器的基本作用就是根據(jù)節(jié)點資源的使用情況和作業(yè)需求,將任務(wù)調(diào)度到各個節(jié)點上執(zhí)行。單理解任務(wù)隊列的話關(guān)鍵的因素有如下幾個:進出方式,優(yōu)先級,容量等。
Hadoop作業(yè)調(diào)度器主要有三種:FIFO、CapacityScheduler和FairScheduler,默認(rèn)的資源調(diào)度器是CapacityScheduler。
先進先出調(diào)度器
FIFO一種批處理調(diào)度器,調(diào)度策略先按照作業(yè)的優(yōu)先級高低,再按照到達(dá)時間的先后選擇被執(zhí)行的作業(yè)。
容量調(diào)度器
CapacityScheduler支持多個隊列,每個隊列可配置一定的資源量,每個隊列采用FIFO調(diào)度策略,計算隊列中正在運行的任務(wù)書和計算資源的比值,選中比值小相對空閑的隊列,然后安裝作業(yè)優(yōu)先級和提交時間的排序。為了防止同一個用戶的作業(yè)獨占隊列中的資源,該調(diào)度器會對同一用戶提交的作業(yè)所占資源量進行限定。
例如上面圖例,假設(shè)100個slot分為三個隊列(ABC),按照如下分配規(guī)則:隊列A給20%的資源,隊列B給50%的資源,隊列C給30%的資源;三個隊列都按照任務(wù)的先后順序依次執(zhí)行,上面的job11、job21、job31是最先運行,也是并行運行。
公平調(diào)度器
和容量調(diào)度器原理類似,支持多隊列多用戶,每個隊列中的資源量可以配置,同一隊列中的作業(yè)公平共享隊列中所有資源。
比如有三個隊列(ABC),每個隊列中的job按照優(yōu)先級分配資源,優(yōu)先級越高分配的資源越多,但是每個job都會分配到資源以確保公平。在資源有限的情況下,每個job理想情況下獲得的計算資源與實際獲得的計算資源存在一種差距,,這個差距就叫做缺額。在同一個隊列中,job的資源缺額越大,越先獲得資源優(yōu)先執(zhí)行,作業(yè)是按照缺額的高低來先后執(zhí)行的。
四、源代碼地址
GitHub·地址 https://github.com/cicadasmile/big-data-parent GitEE·地址 https://gitee.com/cicadasmile/big-data-parent推薦閱讀:編程體系整理
| 01 | Java描述設(shè)計模式,算法,數(shù)據(jù)結(jié)構(gòu) | GitHub·點這里 | GitEE·點這里 | ☆☆☆☆☆ |
| 02 | Java基礎(chǔ)、并發(fā)、面向?qū)ο蟆eb開發(fā) | GitHub·點這里 | GitEE·點這里 | ☆☆☆☆ |
| 03 | SpringCloud微服務(wù)基礎(chǔ)組件案例詳解 | GitHub·點這里 | GitEE·點這里 | ☆☆☆ |
| 04 | SpringCloud微服務(wù)架構(gòu)實戰(zhàn)綜合案例 | GitHub·點這里 | GitEE·點這里 | ☆☆☆☆☆ |
| 05 | SpringBoot框架基礎(chǔ)應(yīng)用入門到進階 | GitHub·點這里 | GitEE·點這里 | ☆☆☆☆ |
| 06 | SpringBoot框架整合開發(fā)常用中間件 | GitHub·點這里 | GitEE·點這里 | ☆☆☆☆☆ |
| 07 | 數(shù)據(jù)管理、分布式、架構(gòu)設(shè)計基礎(chǔ)案例 | GitHub·點這里 | GitEE·點這里 | ☆☆☆☆☆ |
| 08 | 大數(shù)據(jù)系列、存儲、組件、計算等框架 | GitHub·點這里 | GitEE·點這里 | ☆☆☆☆☆ |
總結(jié)
以上是生活随笔為你收集整理的Hadoop框架:Yarn基本结构和运行原理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 显卡常见故障的处理
- 下一篇: Jco服务配置以及程序编写