溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何解析分布式資源調(diào)度框架YARN

發(fā)布時(shí)間:2021-12-09 15:49:07 來源:億速云 閱讀:112 作者:柒染 欄目:大數(shù)據(jù)

如何解析分布式資源調(diào)度框架YARN,針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡(jiǎn)單易行的方法。

YARN產(chǎn)生背景

我們先來了解一下MapReduce 1.x的架構(gòu)以及存在的問題。

如何解析分布式資源調(diào)度框架YARN  
hadoop1.x的架構(gòu)

如圖所示,1.x的架構(gòu)也采用的是主從結(jié)構(gòu):即master-slaves架構(gòu),一個(gè)JobTracker帶多個(gè)TaskTracker

JobTracker:負(fù)責(zé)資源管理和作業(yè)調(diào)度;Tasktracker 向jobtracker定期匯報(bào)本節(jié)點(diǎn)的健康狀況、資源使用情況、作業(yè)執(zhí)行情況;同時(shí)也接收來自JobTracker的命令,負(fù)責(zé)啟動(dòng)和殺死任務(wù)的具體執(zhí)行。MapReduce作業(yè)拆分成Map任務(wù)和Task任務(wù),由TaskTracker負(fù)責(zé)執(zhí)行和匯報(bào)。

這樣的架構(gòu)存在的缺點(diǎn):

  • 只有一個(gè)JobTracker負(fù)責(zé)集群事務(wù)的集中處理,存在單點(diǎn)故障。且壓力大不易擴(kuò)展。

  • JobTracker需要完成得任務(wù)太多,既要維護(hù)job的狀態(tài)又要維護(hù)job的task的狀態(tài),造成資源消耗過多

  • 僅僅只能支持MR作業(yè)。不支持其他計(jì)算框架,如spark,storm等。

  • 存在多個(gè)集群,如Spark集群,hadoop集群同時(shí)存在,不能夠統(tǒng)一管理,資源利用率較低,彼此之間沒有辦法共享資源,運(yùn)維成本高。

 
YARN概述

Yet Another Resource Negotiator。是一個(gè)操作系統(tǒng)級(jí)別的資源調(diào)度框架。

MRv2 最基本的想法是將原 JobTracker 主要的資源管理和 Job 調(diào)度/監(jiān)視功能分開作為兩個(gè)單獨(dú)的守護(hù)進(jìn)程。有一個(gè)全局的ResourceManager(RM)和每個(gè) Application 有一個(gè)ApplicationMaster(AM),Application 相當(dāng)于 MapReduce Job 或者 DAG jobs。ResourceManager和 NodeManager(NM)組成了基本的數(shù)據(jù)計(jì)算框架。ResourceManager 協(xié)調(diào)集群的資源利用,任何 Client 或者運(yùn)行著的 applicatitonMaster 想要運(yùn)行 Job 或者 Task 都得向 RM 申請(qǐng)一定的資源。ApplicatonMaster 是一個(gè)框架特殊的庫(kù),對(duì)于 MapReduce 框架而言有它自己的 AM 實(shí)現(xiàn),用戶也可以實(shí)現(xiàn)自己的 AM,在運(yùn)行的時(shí)候,AM 會(huì)與 NM 一起來啟動(dòng)和監(jiān)視 Tasks。
reference:https://blog.51cto.com/14048416/2342195

如何解析分布式資源調(diào)度框架YARN  
hadoop2.x yarn的示意圖

上圖顯示了YARN的位置:位于HDFS之上,多種應(yīng)用程序之下。這樣多種不同類型的計(jì)算框架都可以運(yùn)行在同一個(gè)集群里面,共享同一個(gè)HDFS集群上的數(shù)據(jù),享受整體的資源調(diào)度。也就是 XXX on YARN,例如Spark on YARN,Spark on YARN,MapReduce on Yarn,Storm on YARN,F(xiàn)link on YARN。好處是與其他計(jì)算框架共享集群資源,按自愿需要分配,進(jìn)而提高集群資源的利用率。

 
YARN架構(gòu)
如何解析分布式資源調(diào)度框架YARN  
YARN的架構(gòu)與核心組件

YARN的架構(gòu)中包含ResourceManager(RM),NodeManager(NM),ApplicationMaster(AM),Container,Client供5種核心組件,依然是一種主從結(jié)構(gòu),即1個(gè)RM+N個(gè)NM的形式。它們的作用如下:

1)RM:整個(gè)集群同一時(shí)間提供服務(wù)的只有一個(gè),(生產(chǎn)上多采用一主一備的方式防止故障發(fā)生),負(fù)責(zé)集群資源的統(tǒng)一管理和調(diào)度。主要承擔(dān)的任務(wù)由:

  • 處理客戶端的請(qǐng)求:提交一個(gè)作業(yè),殺死一個(gè)作業(yè)。

  • 監(jiān)控NM,如果某個(gè)NM發(fā)生故障,將該NM上運(yùn)行的任務(wù)告訴AM,由AM決定是否重新運(yùn)行相應(yīng)task。

2)NM:整個(gè)集群中有多個(gè),負(fù)責(zé)自身節(jié)點(diǎn)資源管理和使用。它承擔(dān)的任務(wù)由:

  • 定時(shí)向RM匯報(bào)本節(jié)點(diǎn)的資源使用情況和自身的健康狀況。

  • 接收并處理來自RM的各種命令,比如啟動(dòng)Container運(yùn)行AM。

  • 處理來自AM的命令,如啟動(dòng)Container運(yùn)行task。

  • 單個(gè)節(jié)點(diǎn)的資源管理

3)AM:每個(gè)應(yīng)用程序?qū)?yīng)一個(gè)AM,(每一個(gè)MapReduce作業(yè),每一個(gè)Spark作業(yè)對(duì)應(yīng)一個(gè)),負(fù)責(zé)對(duì)應(yīng)的應(yīng)用程序管理。

  • 為應(yīng)用程序向RM申請(qǐng)資源(core、memory等),之后進(jìn)行分配

  • 需要與NM進(jìn)行通信:?jiǎn)?dòng)或者停止task,task和AM都是是運(yùn)行在Container中的。

一個(gè)NM可能運(yùn)行很多task,這些task分屬于不同的AM

4)Container

  • 封裝了CPU Memory等資源的一個(gè)容器,是一個(gè)任務(wù)運(yùn)行環(huán)境的抽象。

  • AM運(yùn)行在Container里面,task也是

5)Client:客戶端

發(fā)起響應(yīng)的請(qǐng)求,例如:

  • 提交作業(yè),查看作業(yè)運(yùn)行進(jìn)度

  • 殺死作業(yè)

 
YARN執(zhí)行流程
如何解析分布式資源調(diào)度框架YARN  
YARN的執(zhí)行流程示意圖

①客戶端提交task 請(qǐng)求到RM

②③RM先到NM上啟動(dòng)1個(gè)Container,用來運(yùn)行AM。

④AM啟動(dòng)之后,注冊(cè)到RM上。(任務(wù)是由AM管理的,注冊(cè)之后,用戶就可以通過RM查詢AM上的作業(yè)進(jìn)度)并向NM申請(qǐng)資源(Core Memory),RM給AM分配相應(yīng)的NM資源,

⑤⑥AM下發(fā)指令給相應(yīng)的的NM,NM啟動(dòng)Container運(yùn)行task 。

這就是YARN執(zhí)行的一個(gè)基本流程,這是一個(gè)通用的流程,MapReduce作業(yè)對(duì)應(yīng)MapReduce的Application master,Spark作業(yè)對(duì)應(yīng)Spark的Application Master,其他的作業(yè)也有相應(yīng)的Application Master。

我們?cè)谇懊孢M(jìn)行了YARN的配置,參考hadoop中Yarn的配置與使用示例,主要有mapred-site.xmlyarn-site.xml兩個(gè)配置文件,在啟動(dòng)時(shí)有一個(gè)start-yarn.sh 命令,就是用來啟動(dòng)RM和NM的(使用stop-yarn.sh停止YARN的進(jìn)程)。啟動(dòng)YARN之后,我們就可以在web瀏覽器上可以查看YARN集群的情況。包括當(dāng)前節(jié)點(diǎn)的情況,任務(wù)的運(yùn)行狀態(tài)等。

關(guān)于如何解析分布式資源調(diào)度框架YARN問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI