1、什麼是Yarn
通用資源管理系統和調度平臺
2、Yarn特點:
- 支持多計算框架
- 資源利用率高,運行成本低,數據共享。
3、Yarn的意義:
降低了企業硬件的成本(多個集羣變成一個集羣),減少了資源的了浪費,運營成本低。
4、Yarn基本組成
ResourceManager :一個集羣資源調度的管理者
NodeManager :一個節點資源調度的管理者(集羣各個節點資源的工作者)
ApplicationMaster : 一個計算任務的管理者
Container : 容器(cpu 和 內存)
5、Yarn提交任務的流程
- client向RM提交應用程序,其中包括啓動該應用的ApplicationMaster的必須信息,例如ApplicationMaster程序、啓動ApplicationMaster的命令、用戶程序等。
- ResourceManager啓動一個container用於運行ApplicationMaster。
- 啓動中的ApplicationMaster向ResourceManager註冊自己,啓動成功後與RM保持心跳。
- ApplicationMaster向ResourceManager發送請求,申請相應數目的container。
- 申請成功的container,由ApplicationMaster進行初始化。container的啓動信息初始化後,AM與對應的NodeManager通信,要求NM啓動container。
- NM啓動啓動container。
- container運行期間,ApplicationMaster對container進行監控。container通過RPC協議向對應的AM彙報自己的進度和狀態等信息。
- 應用運行結束後,ApplicationMaster向ResourceManager註銷自己,並允許屬於它的container被收回。
6、Yarn的調度方式
FIFO Scheduler : 先進先出(先來後到的順序)
Capacity Scheduler:容量調度
Fair Scheduler:公平調度
- 先進先出:優先提交的,優先執行,後面提交的等待。(火車過隧道)。
- 容量調度:允許創建多個任務對列,每個隊列使用所有資源的一部分。多個任務對列可以同時執行。但是一個隊列內部還是先進先出。CDH默認的調度器。
3、公平調度:第一個程序在啓動時可以佔用其他對列的資源(100%佔用),當其他對列有任務提交時,佔用資源的對列需要將資源還給該任務。還資源的時候,效率比較慢。
7、參數yarn.scheduler.fair.allow-undeclared-pools的作用是?(true/false)
如果提交一個任務沒有到任何的隊列,是否允許創建一個新的隊列,默認爲true
8、參數yarn.scheduler.fair.user-as-default-queue的作用是?(true/false)
是否提交到默認隊列 ,以用戶名爲默認對列
9、介紹一下hadoopHA
1、HadoopHA 包括兩個部分,NameNodeHA和ResourceManagerHA
2、hadoop HA解決了早期版本中的NN單點問題。YarnHA解決了ResourceManager的單點問題
3、NNHA方案中包含兩個NN,一個是active狀態,一個是StandBy狀態。每個NN分配在兩個完全獨立的服務器中。每個NN所在的節點需配置一個ZKFC。
4、兩個NN之間的元數據同步使用JN傳遞。
10、ZKFC作用:
監控NN所在節點的硬件設備、軟件(NN)、操作系統,同時維護與ZK的通信。主要用於兩個NN之間狀態切換時的信息傳遞。
11、NN Active 狀態和StandBy狀態的確認:
兩個NN到ZK集羣註冊一個臨時的ZNode,哪個先註冊成功,哪個就是Active,另外一個就是StandBy.
12、ActiveNN宕機後故障如何轉移
當ActiveNN節點故障 à ActiveZKFC通知ZK刪除臨時ZNode à StandBy狀態的ZKFC訂閱這個臨時ZNode的變換,若ZNode消失,StandBy狀態的ZKCF立刻通知StandBy NN à StandBy NN 遠程登錄ActiveNN,執行Kill -9 ActiveNN à StandBy NN通知StandBy ZKFC去ZK上註冊臨時ZNode,註冊成功切換爲active狀態。
13、兩個NN之間的元數據信息如何實現快速同步?
ActiveNN實時將FSimage和日誌接入JN(高效的存儲系統)。StandByNN實時獲取JN內部的數據,實現兩個節點的實時元數據同步。