Hadoop Yarn 框架原理及運作機制
1.1 YARN 基本架構
YARN是Hadoop 2.0中的資源管理系統,它的基本設計思想是將MRv1中的JobTracker拆分成了兩個獨立的服務:一個全域性的資源管理器ResourceManager和每個應用程式特有的ApplicationMaster。
其中ResourceManager負責整個系統的資源管理和分配,而ApplicationMaster負責單個應用程式的管理。
1.2 YARN基本組成結構
YARN總體上仍然是Master/Slave結構,在整個資源管理框架中,ResourceManager為Master,NodeManager為Slave,ResourceManager負責對各個NodeManager上的資源進行統一管理和排程。當使用者提交一個應用程式時,需要提供一個用以跟蹤和管理這個程式的ApplicationMaster,它負責向ResourceManager申請資源,並要求NodeManger啟動可以佔用一定資源的任務。由於不同的ApplicationMaster被分佈到不同的節點上,因此它們之間不會相互影響。在本小節中,我們將對YARN的基本組成結構進行介紹。
圖2-9描述了YARN的基本組成結構,YARN主要由ResourceManager、NodeManager、ApplicationMaster(圖中給出了MapReduce和MPI兩種計算框架的ApplicationMaster,分別為MR AppMstr和MPI AppMstr)和Container等幾個元件構成。
1.ResourceManager(RM)
RM是一個全域性的資源管理器,負責整個系統的資源管理和分配。它主要由兩個元件構成:排程器(Scheduler)和應用程式管理器(Applications Manager,ASM)。
(1)排程器
排程器根據容量、佇列等限制條件(如每個佇列分配一定的資源,最多執行一定數量的作業等),將系統中的資源分配給各個正在執行的應用程式。
需要注意的是,該排程器是一個“純排程器”,它不再從事任何與具體應用程式相關的工作,比如不負責監控或者跟蹤應用的執行狀態等,也不負責重新啟動因應用執行失敗或者硬體故障而產生的失敗任務,這些均交由應用程式相關的ApplicationMaster完成。排程器僅根據各個應用程式的資源需求進行資源分配,而資源分配單位用一個抽象概念“資源容器”(Resource Container,簡稱Container)表示,Container是一個動態資源分配單位,它將記憶體、CPU、磁碟、網路等資源封裝在一起,從而限定每個任務使用的資源量。此外,該排程器是一個可插拔的元件,使用者可根據自己的需要設計新的排程器,YARN提供了多種直接可用的排程器,比如Fair Scheduler和Capacity Scheduler等。
(2) 應用程式管理器
應用程式管理器負責管理整個系統中所有應用程式,包括應用程式提交、與排程器協商資源以啟動ApplicationMaster、監控ApplicationMaster執行狀態並在失敗時重新啟動它等。
2. ApplicationMaster(AM)
使用者提交的每個應用程式均包含1個AM,主要功能包括:
與RM排程器協商以獲取資源(用Container表示);
將得到的任務進一步分配給內部的任務;
與NM通訊以啟動/停止任務;
監控所有任務執行狀態,並在任務執行失敗時重新為任務申請資源以重啟任務。
當前YARN自帶了兩個AM實現,一個是用於演示AM編寫方法的例項程式distributedshell,它可以申請一定數目的Container以並行執行一個Shell命令或者Shell指令碼;另一個是執行MapReduce應用程式的AM—MRAppMaster,我們將在第8章對其進行介紹。此外,一些其他的計算框架對應的AM正在開發中,比如Open MPI、Spark等。
3. NodeManager(NM)NM是每個節點上的資源和工作管理員,一方面,它會定時地向RM彙報本節點上的資源使用情況和各個Container的執行狀態;另一方面,它接收並處理來自AM的Container啟動/停止等各種請求。
4. Container
Container是YARN中的資源抽象,它封裝了某個節點上的多維度資源,如記憶體、CPU、磁碟、網路等,當AM向RM申請資源時,RM為AM返回的資源便是用Container表示的。YARN會為每個任務分配一個Container,且該任務只能使用該Container中描述的資源。
需要注意的是,Container不同於MRv1中的slot,它是一個動態資源劃分單位,是根據應用程式的需求動態生成的。截至本書完成時,YARN僅支援CPU和記憶體兩種資源,且使用了輕量級資源隔離機制Cgroups進行資源隔離。
1.3 YARN工作流程
當使用者向YARN中提交一個應用程式後,YARN將分兩個階段執行該應用程式:
第一個階段是啟動ApplicationMaster;
第二個階段是由ApplicationMaster建立應用程式,為它申請資源,並監控它的整個執行過程,直到執行完成。
如圖2-11所示,YARN的工作流程分為以下幾個步驟:
步驟1 使用者向YARN中提交應用程式,其中包括ApplicationMaster程式、啟動ApplicationMaster的命令、使用者程式等。
步驟2 ResourceManager為該應用程式分配第一個Container,並與對應的Node-Manager通訊,要求它在這個Container中啟動應用程式的ApplicationMaster。
步驟3 ApplicationMaster首先向ResourceManager註冊,這樣使用者可以直接通過ResourceManager檢視應用程式的執行狀態,然後它將為各個任務申請資源,並監控它的執行狀態,直到執行結束,即重複步驟4~7。
步驟4 ApplicationMaster採用輪詢的方式通過RPC協議向ResourceManager申請和領取資源。
步驟5 一旦ApplicationMaster申請到資源後,便與對應的NodeManager通訊,要求它啟動任務。
步驟6 NodeManager為任務設定好執行環境(包括環境變數、JAR包、二進位制程式等)後,將任務啟動命令寫到一個指令碼中,並通過執行該指令碼啟動任務。
步驟7 各個任務通過某個RPC協議向ApplicationMaster彙報自己的狀態和進度,以讓ApplicationMaster隨時掌握各個任務的執行狀態,從而可以在任務失敗時重新啟動任務。
在應用程式執行過程中,使用者可隨時通過RPC向ApplicationMaster查詢應用程式的當前執行狀態。
步驟8 應用程式執行完成後,ApplicationMaster向ResourceManager登出並關閉自己。
1.4 多角度理解YARN
可將YARN看做一個雲作業系統,它負責為應用程式啟動ApplicationMaster(相當於主執行緒),然後再由ApplicationMaster負責資料切分、任務分配、啟動和監控等工作,而由ApplicationMaster啟動的各個Task(相當於子執行緒)僅負責自己的計算任務。當所有任務計算完成後,ApplicationMaster認為應用程式執行完成,然後退出。
相關文章
- Hadoop Yarn框架原理解析HadoopYarn框架
- 通俗講解比特幣的原理及運作機制比特幣
- Hadoop框架:Yarn基本結構和執行原理Hadoop框架Yarn
- 深入理解Yarn的架構及作業排程機制Yarn架構
- 一個故事告訴你比特幣的原理及運作機制比特幣
- Hadoop Yarn框架詳細解析HadoopYarn框架
- Hadoop作業排程機制Hadoop
- Hadoop 新 MapReduce 框架 Yarn 詳解Hadoop框架Yarn
- Hadoop學習之YARN及MapReduceHadoopYarn
- Hadoop框架:DataNode工作機制詳解Hadoop框架
- Hadoop框架:NameNode工作機制詳解Hadoop框架
- Hadoop YarnHadoopYarn
- Spark on Yarn 部分一原理及使用SparkYarn
- Nginx快取原理及機制Nginx快取
- HTTP快取機制及原理HTTP快取
- HashMap原理(二) 擴容機制及存取原理HashMap
- 中國科技發展運作機制案例
- Hadoop框架:HDFS讀寫機制與API詳解Hadoop框架API
- Hadoop YARN 架構HadoopYarn架構
- hadoop_MapReduce yarnHadoopYarn
- HADOOP-YARN-JDKHadoopYarnJDK
- nextTick的原理及執行機制
- 深入理解HTTP快取機制及原理HTTP快取
- Spring 事件監聽機制及原理分析Spring事件
- Hadoop面試題(四)——YARNHadoop面試題Yarn
- Hadoop-Yarn架構HadoopYarn架構
- Hadoop Yarn Capacity SchedulerHadoopYarn
- 轉:徹底弄懂HTTP快取機制及原理HTTP快取
- JVM原理及調優(4)——類載入機制JVM
- OAuth的機制原理講解及開發流程OAuth
- Yarn執行原理Yarn
- Handler機制原理
- 領英開源TonY:構建在Hadoop YARN上的TensorFlow框架HadoopYarn框架
- Hadoop學習筆記—YarnHadoop筆記Yarn
- Apache Hadoop Yarn 學習(二)ApacheHadoopYarn
- hadoop之yarn(優化篇)HadoopYarn優化
- 螞蟻金服通訊框架 SOFABolt 解析 | 超時控制機制及心跳機制框架
- 再談mysql鎖機制及原理—鎖的詮釋MySql