YARN運行原理
yarn的前世今生
首先在hadoop1.0版本中,存在的最大問題就是資源管理的問題!
隨着技術的發展,人們已經不在滿足hadoop集羣中只使用mapreduce一個計算框架,人們更希望有一套合理的管理機制來控制整個集羣的資源。
在hadoop中啓動yarn的命令: ./start-yarn.sh
- RescoueceManager 是全局資源管理器
- NodeManager 是節點資源任務管理器
我們可以理解成RM和NM就是Yarn
Yarn的基本架構
Yarn在總體設計思想上和HDFS差不多的都是主從關係(Master/Slave)
在Hdfs中NameNode是主節點, datanode是從節點
在Yarn中RM是主節點,NM是從節點
詳解RM的組成部分
- 調度器: Scheduler
- 就是爲了讓我們每一個節點都利用起來,合理的分配和調度的管理器,值得注意的是,調度器真的是一個純調度器,它不負責從事任何具體的應用程序相關的工作
- 調度器分爲三種:容量調度器、公平調度器、隊列調度器
- 應用程序管理器:Application Manager
- AM主要是負責接收client端傳輸的job請求,爲應用程序分配第一個Container(容器/資源池)來運行我們第一個Application Master, 還有就是負責監控Application Master, 並且在失敗的時候重啓 Application Master
- 當我們正常提交一個MR任務的時候,我們會在後臺jps查看進程的時候會多了一個MRAppMaster的進程:ApplicationMaster
- 首先ApplicationMaster就是一個java程序,只不過他的類名:MRAppMaster
- ApplicationMaster負責監控MAP任務和reduce任務,用戶提交的每一個程序都會產生一個AM, 這個AM就是負責整個任務的管理者
- Application Master主要功能
- 與RM調度器RS協商獲取執行資源
- 與NM通信通信,以啓動任務、停止任務;其中涉及到一個東西:資源池/容器(contaniner)
- 監控所有旗下的任務的執行狀態,如果失敗則會重啓任務來申請資源
- Contaniner
- contaniner是Yarn中的抽象資源,它封裝了某個節點的多維度的資源:如內存,CPU,磁盤,網絡,IO
- 資源池主要是將節點的資源切分出來組成一個可以單獨運行任務(的容器用來運行任務