MapReduce V2---Yarn的架構及其執行原理
1):擴充套件性差
MRv1中,Jobracker同事兼備了資源管理和作業控制(job的生命週期管理(task排程,跟蹤task過程狀態,task處理容錯)兩個功能。
單個的jobtracker無論在記憶體還是其他資源方面總存在瓶頸,在伸縮性、資源利用率、執行除mapreduce的其他任務等方面都會有限制。
MRv2 Yarn框架把資源排程和task管理監控分離開來,由資源管理器NodeManager負責資源排程,每一個application(job)由一個AppMaster負責對task進行排程管理監控,並且可以監控AppMaster的狀態,有問題可以在其他節點重啟。
2):資源利用率低
MRv1 mapreduce框架使用slot做資源表示單位,並且map slot和reduce slot分離的,這樣資源不能共享,資源利用率不高,yarn使用節點的cpu、記憶體等資源作為資源表示單位,大大提高了資源利用率。
2.Yarn的組成
ResourceManager(RM)
RM是全域性資源管理器,負責整個系統的資源管理和分配。
主要由兩個元件組成:排程器和應用程式管理器(ASM)
排程器:根據容量,佇列等限制條件,將系統中的資源分配給各個正在執行的應用程式,不負責具體應用程式的相關工作,比如監控或跟蹤狀態
應用程式管理器:負責管理整個系統中所有應用程式
ApplicationMaster(AM)
使用者提交的每個應用程式均包含一個AM
AM的主要功能:
(1)與RM排程器協商以獲取資源(用Container表示)
(2)將得到的任務進一步分配給內部的任務
(3)與NM通訊以自動/停止任務
(4)監控所有任務執行狀態,並在任務執行失敗時重新為任務申請資源以重啟任務
當前YARN自帶了兩個AM實現
一個用於演示AM編寫方法的例項程式distributedshell
一個用於Mapreduce程式---MRAppMaster
其他的計算框架對應的AM正在開發中,比如spark等。
Nodemanager(NM)和Container
NM是每個節點上的資源和工作管理員
(1)定時向RM彙報本節點上的資源使用情況和各個Container的執行狀態
(2)接收並處理來自AM的Container啟動/停止等各種要求
Container是YARN中的資源抽象,它封裝了某個節點上的多維度資源
YARN會為每個任務分配一個Container,且該任務只能使用該Container中描述的資源
(1):由客戶端提交一個應用,由RM的ASM接受應用請求
提交過來的應用程式包括哪些內容:
a:ApplicationMaster
b:啟動Applicationmaster的命令
c:本身應用程式的內容
(2):提交了三部分內容給RM,然後RM找NodeManager,然後
Nodemanager就啟用Applicationmaster,並分配Container
接下來我們就要執行這個任務了,
(3):但是執行任務需要資源,所以我們得向RM的ASM申請執行任務的資源(它會在RM這兒註冊一下,說我已經啟動了,註冊了以後就可以通過RM的來管理,我們使用者也可以通過RM的web客戶端來監控任務的狀態)ASM只是負責APplicationMaster的啟用
(4)我們註冊好了後,得申請資源,申請資源是通過第四步,向ResourceScheduler申請的
(5)申請並領取資源後,它會找Nodemanager,告訴他我應經申請到了,然後Nodemanager判斷一下,
(6)知道他申請到了以後就會啟動任務,當前啟動之前會準備好環境,
(7)任務啟動以後會跟APplicationmaster進行通訊,不斷的心跳進行任務的彙報。
(8)完成以後會給RM進行彙報,讓RSM撤銷註冊。然後RSM就會回收資源。當然了,我們是分散式的,所以我們不會只跟自己的Nodemanager通訊。也會跟其他的節點通訊。
相關文章
- Storm架構與執行原理ORM架構
- MapReduce執行流程
- MapReduce的執行流程概述
- spark基礎之spark sql執行原理和架構SparkSQL架構
- MapReduce程式執行流程
- MapReduce1架構設計架構
- 大資料學習開發技術:MapReduce執行原理大資料
- Java 執行緒池架構原理和原始碼解析(ThreadPoolExecutor)Java執行緒架構原始碼thread
- hadoop的mapreduce串聯執行Hadoop
- 使用MapReduce執行WordCount案例
- 微信小程式的執行緒架構微信小程式執行緒架構
- mapreduce的一般執行步驟
- Mapreduce(二):MR的執行過程分析
- MapReduce 執行全過程解析
- Hadoop學習(二)——MapReduce\Yarn架構HadoopYarn架構
- Flink 的執行架構詳細剖析架構
- 細說JUC的執行緒池架構執行緒架構
- MySQL基礎架構執行流程MySql架構
- go-micro開發RPC服務的方法及其執行原理GoRPC
- ASP.NET 2.0執行原理及其過程簡要分析ASP.NET
- Cypress 架構及其決定的侷限架構
- Hadoop之MapReduce2架構設計Hadoop架構
- java架構-執行緒和程式的區別Java架構執行緒
- Java執行緒池實現原理及其在美團業務中的實踐Java執行緒
- 什麼是Ajax(Ajax的來歷、執行原理、優缺點及其它)
- jMeter結構體系及執行原理JMeter結構體
- Spark資料收藏--------Spark執行架構Spark架構
- 雙執行緒架構:小程式相比於H5的架構優勢執行緒架構H5
- MapReduce(四):shuffer原理
- Spark的執行原理Spark
- HDFS的執行原理
- Vue底層架構及其應用Vue架構
- Java異常簡介及其架構Java架構
- Nginx 原理和架構Nginx架構
- HDFS架構及原理架構
- RocketMQ(1)-架構原理MQ架構
- 深入HBase架構原理架構
- storm 架構和原理ORM架構