YARN是什麼?node
YARN是一種新的 Hadoop 資源管理器,它是一個通用資源管理系統,可爲上層應用提供統一的資源管理和調度,它的引入爲集羣在利用率、資源統一管理和數據共享等方面帶來了巨大好處。web
若是沒有YARN!算法
- 沒法管理集羣資源分配問題。
- 沒法合理的給程序分配合理的資源。
- 不方便監控程序的運行狀態及日誌。
1. 客戶端發送請求,由Resource Manager分析須要多少內存資源。 2. Resource Manager告訴Node Manager用什麼樣的jar包什麼樣的啓動命令。 3. Node Manager建立Container,在Container啓動Application Master。 4. Application Master向Resource Manager發送ResourceRequest請求去Resource Manager申請資源 5. 啓動對應的Node Manager進行通訊 6. Node Manager找到對應的Container執行Task
集羣資源調度器須要解決:架構
Yarn使用列隊解決多租戶中共享資源的問題app
root框架
|---prdwebapp
|---devoop
|---eng性能
|---science線程
支持三種資源調度器(yarn.resourcemanager.scheduler.class)
FIFO
Capacity Scheduler
設計思想:資源按照比例分配給各個列隊
計算能力保證:以列隊爲單位劃分資源,每一個列隊最低資源保證
靈活:當某個列隊空閒時,其資源能夠分配給其餘的列隊使用
支持優先級:單個列隊內部使用的就是FIFO,支持做業優先級調度
多租戶:
基於資源調度:支持內存資源調度和CPU資源的調度
從2.8.0版本開始支持搶佔
root
|---prd 70%
|---dev 30%
|---eng 50%
|---science 50%
Fair Scheduler(推薦)
調用Wordcount案例,看看效果吧
hadoop jar /opt/cloudera/parcels/CDH-6.2.0-1.cdh6.2.0.p0.967373/lib/hadoop-mapreduce/hadoop-mapreduce-examples-3.0.0-cdh6.2.0.jar wordcount -Dmapreduce.job.queuename="root.default" /word.txt /output #任務2將會失敗root.users is not a leaf queue,有了自列隊就不能提交 hadoop jar /opt/cloudera/parcels/CDH-6.2.0-1.cdh6.2.0.p0.967373/lib/hadoop-mapreduce/hadoop-mapreduce-examples-3.0.0-cdh6.2.0.jar wordcount -Dmapreduce.job.queuename="root.users" /word.txt /output1 hadoop jar /opt/cloudera/parcels/CDH-6.2.0-1.cdh6.2.0.p0.967373/lib/hadoop-mapreduce/hadoop-mapreduce-examples-3.0.0-cdh6.2.0.jar wordcount -Dmapreduce.job.queuename="root.users.dev" /word.txt /output2 hadoop jar /opt/cloudera/parcels/CDH-6.2.0-1.cdh6.2.0.p0.967373/lib/hadoop-mapreduce/hadoop-mapreduce-examples-3.0.0-cdh6.2.0.jar wordcount -Dmapreduce.job.queuename="root.users.test" /word.txt /output3
從圖中看出yarn的HA相對於HDFS的HA簡單不少。緣由是YARN在開發的過程當中,HDFS才考慮到HA的應用(在出2.0版本),HDFS爲了老代碼的兼容性,和新代碼的可拓展性加入了ZKFailoverController(ZKFC)來處理ZK相關的業務。而YARN就直接將ZK的相關的業務規劃進了源架構中,因此架構圖看起來比HDFS HA簡單不少。
也很簡單,一步完成。