您好,登錄后才能下訂單哦!
yarn知識體系總結
Yarn 產生的原因
(1)MapreduceV1 中,jobtracker 存在瓶頸:
集群上運行的所有mr 程序都有jobtracker 來調度
SPOF 單點故障
職責劃分不清晰
(2) 將jobtracker 的職責劃分成兩個部分:
? 資源調度與管理:由統一的資源調度平臺(集群)來實現(yarn)
? 任務監控與管理:
A、每一個application 運行時擁有一個自己的任務監控管理進程AppMaster
B、AppMaster 的生命周期:application 提交給yarn 集群之后,yarn 負責啟動該application 的AppMaster,隨后任務的執行監控調度等工作都交由AppMaster,待這個application 運行完畢后,AppMaster 向yarn 注銷自己。
C、AppMaster 的具體實現由application 所使用的分布式運算框架自己負責,比如Mapreduce 類型的application 有MrAppMaster 實現類。Spark DAG 應用則有SparkOnYarn 的SparkContext 實現
yarn的架構圖
yarn的2個主要的類節點(服務進程)
1、resourcemanager 主節點master --- 只需要1個 (也可以實現HA)
2、nodemanager 從節點 -----根據集群規模可以有多個
具體小結如下:
(1)ResourceManager ----> master node,可配多個RM 實現HA 機制,
ResourceManager由兩個核心組件構成:
Scheduler 和ApplicationsManager;
Scheduler:負責資源調度,調度策略可插拔(內置實現CapacityScheduler / FairScheduler )不提供對application 運行的監控;
ApplicationsManager:負責響應任務提交請求,協商applicationMaster 運行的container,重啟失敗的applicationMaster
(2)NodeManager ----> slave nodes,每臺機器上一個
職責:加載containers,監控各container 的資源使用情況,并向Resourcemanager/Scheduler 匯報
(3)ApplicationMaster ----> 特定運算框架自己實現,接口為統一的AppMaster
職責:向Scheduler 請求適當的資源,跟蹤任務的執行,監控任務執行進度、狀態等
yarn的基本概念-mr程序提交的流程
yarn:hadoop的資源管理調度平臺(集群)---為用戶程序提供運算資源的管理和調度
用戶程序:如用戶開發的mr程序
1、runjar啟動起來之后,就會找resourcemanager,發出一個遠程過程調用RPC //申請提交一個job(mr程序)
2、resourcemanager會返回一個jobid以及一個提交job相關文件的hdfs路徑給runjar程序 比如:hdfs://../stagingDIR
3、runjar就會上傳job相關的文件到hdfs路徑下 比如:hdfs://.../stagingDIR/jobid/worcount.jar
jbo.xml
job split的切片信息
4、通知RM,文件上傳成功
5、在RM內部會對本次客戶端提交的任務,構造出一個任務出來,放在他的內部的任務隊列中。別的客戶端提交上來的任務也會在這個隊列中,當資源不夠的時候,會等待。
6、nodemanager和resourcemanager之間時刻都保持著一個心跳的通信,任務出來之后,nodemanager會去自動去領取任務,比如:nodemanager在領取任務的時候被其中一個節點領取到了任務,nodemanager會到hdfs上拉取job的相關的文件。
7、nodemanager在自己的內部隔離出一部分資源出來,形成一個容器(container)cpu+mem 這個任務要做的第一件事情是:他會在容器里面去啟動一個程序,(那他怎么知道去啟動這個程序的呢?resource manager會在這個job任務中描述的會嵌入一個啟動程序的shell命令)nodemanager負責把這個shell命令在他的機器上執行一下就ok了,執行以下就會在容器中啟動一個MapReduce jar包中的一個程序,這個程序就叫做(MRappmaster進程)接下來所有的處理流程就由這個MRappmaster進程來主導了。
MRAPPmaster會做什么事?他本身又是個什么東西呢?
MRappmaster:其實就是一個MapReduce的應用程序的主管。這個主管進程是MapReduce框架來實現的,這個就是用來管理這個MapReduce程序的執行
在yarn中其實就只負責到把mrappmaster進程啟動起來。其他的MapReduce程序具體是怎么運行的,yarn就不管了。yarn只負責給你相應需要的資源就Ok了
8、mrappmaster啟動起來之后,會向resourcemanager注冊并申請程序運行的資源。mrappmaster會啟動map task和reduce task進程,所以需要資源包括監控和管理任務所需要的資源。
9、resourcemanager就會把mrappmaster申請的響應的資源分配給他,那么在任務隊列中就又會產生新的任務,這些任務是交給nodemanager去處理的(其實就是分配資源的任務)nodemanager領取到新的分配資源的任務的時候就會在自己的這臺機器上創建新的容器(一臺機器上可以創建多個容器)每臺nodemanager創建好的容器資源列表會返回給RM
10、RM就會返回資源列表信息給MRappmaster
11、mrappmaster就會去找到每臺nodemanager中領到任務并創建容器的機器,讓他們去啟動map task進程。(要啟動幾個map task進程是看job任務中關于job split切片規則的,規則中是幾個就起幾個map task進程)
12、當map task處理完成任務后會返回信息給mrappmaster 告訴他我把處理好的 任務結果放在了哪里哪里....
13、mrappmaster會再次向RM申請新的資源,RM會為這次的申請再次分配一個任務到任務隊列中,那么其中的一個nodemanager會去領取任務,并且分配容器,然后會返回給RM,告訴他我創建好了容器,然后RM會告訴給MRappamster告訴他,你需要的資源,我給你創建好了,并且告訴他在那臺nodemanager上。
14、mrappmaster會在響應的nodemanager容器中啟動一個reduce task 進程,并且告訴他map 輸出的結果在哪里 哪里...
reduce task就會去拿,在執行他的內部的執行過程
16、reduce task就會給mrappmaster返回處理結果,
17、整個MR程序處理完成,mrappmaster向RM注銷自己。
小結:
YARN的工作機制--MR程序運行流程
查看map task和reduce task的進程用命令jps看到的是yarn child
總結:
1.yarn只響應job的提交及為job的運行分配資源
yarn不參與job的具體運行機制和流程
2.mapreduce程序中有一個MrAppmaster來負責程序的 具體運行流程控制
3.由于yarn不提供用戶程序的具體運行,所以yarn可以為各種類型的資源程序提供資源服務
(YARN就類似于一個操作系統平臺,可以運行各種各樣運算框架所開發的程序:mapreduce storm spark...)
4.因為yarn的這種運行機制,延長了hadoop的生命周期
5.因為yarn可以整合各種各樣的運算框架,企業就可以把各種分布式框架整合到hadoop集群
以便于企業管理和節約了企業的成本
application 生命周期
Yarn 支持短周期和長周期應用
MR:短周期應用,用戶的每一個job 為一個application
Spark:短周期應用,但比上一種效率要高,它是將一個工作流(DAG)轉化為一個application,這樣在job 之間可以重用container 及中間結果數據可以不用落地
Storm:long-running 應用,應用為多用戶共享,降低了資源調度的前期消耗,從而可以為用戶提供低時延響應
資源請求
資源請求由Container 對象描述,支持數據本地性約束,如處理hdfs 上的數據,則container 優先分配在block 所在的datanode,如該datanode 資源不滿足要求,則優選同機架,還不能滿足則隨機分配
Application 可以在其生命周期的任何階段請求資源,可以在一開始就請求所需的所有資源,也可以在運行過程中動態請求資源;如spark,采用第一種策略;而MR 則分兩個階段,map task 的資源是在一開始一次性請求,而reduce task 的資源則是在運行過程中動態請求;并且,任務失敗后,還可以重新請求資源進行重試
yarn任務調度--capacity scheduler(容量調度) / fair scheduler(公平調度) //此部分見單獨文檔
由于集群資源有限,當無法滿足眾多application 的資源請求時,yarn 需要適當的策略對application 的資源請求進行調度;
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。