yarn 與 resource manager ha
阿新 • • 發佈:2017-09-12
using 運行 腦裂 原來 script tor rac start eve Scheduler負責創建資源,這些資源基於隊列與容量限制.
現在資源以容器的形式包裝起來,如多少內存,多少個cpu core被定義成一個容器.
一個作業請求的時候分配多少個容器?
調度器具有可插拔的功能,來負責把集群的資源進行劃分.現在主流的調度策略是
基於YARN的容量調度策略與基於FB的公平調度策略.
應用管理器主要負責作業的提交,並且負責協調第一個容器,第一個窗口是作業的
applicationmaster進程需要的,它還負責這個容器啟動失敗後的重啟.appicationmaster
後期會向sheduler來協調作業運行需要的資源.
YARN支持資源保留機制,有時候需要運行特別重要的作業,或者某作業需要的容量比較大,
可會自動啟用保留機制,預留一些cpu,內存資源供作業使用.
如何主動在代碼中使用這個功能?
RM的重啟,
早期的RM HA實現中,只做到了不保留工作的重啟,即它只保留了作業的狀態與
運行時所需安全證書等信息,然後重啟之後,nm會殺死正在運行的container並重新註冊到rm上,
相當於重新啟動了整個yarn,只是不需要重新提交作業而已.
近兩年已經實現了保留工作的RM重啟,通過結合從NM,application master來重建容器狀態,原來
運行的作業不需要在rm重啟後被殺死重新運行,在重啟或切換期間它們只是輪詢嘗試,對用戶是透明的.
這些作業運行的元數據信息可能保存在HDFS上,也可以保存在數據庫與ZOOKEEPER上,
主流的配置是ZOOKEERP,因為它可以支持RM的HA,主要是支持fencing來保證不腦裂,不讓多個rm進程來
改寫存儲的內容,這是ZK的特定,它的節點可以用於分布式鎖類似的功能.
基於文件或leveldb的存儲都不支持fencing的功能.
YARN
最初的思想是把hadoop1中的job tracker的功能拆分出來,
把它的資源管理與任務調度功能分成兩個單獨的進程.
yarn體系結構中有兩個進程,resource manager和nodemanger
.
前者主要負責資源分配,後者nodemanager在每一個機器中都有一個進程,
負責container的創建,監控分配的資源(CPU,內存和磁盤與網絡資源),同時
通過心跳匯報這些情況給RM.
applicationmaster是框架特定的作業進程,主要負責與RM申請資源與監控任務
執行的情況.運行在nodemanager上面.
包含兩大組件,Scheduler和ApplicationManager.
現在資源以容器的形式包裝起來,如多少內存,多少個cpu core被定義成一個容器.
一個作業請求的時候分配多少個容器?
調度器具有可插拔的功能,來負責把集群的資源進行劃分.現在主流的調度策略是
基於YARN的容量調度策略與基於FB的公平調度策略.
應用管理器主要負責作業的提交,並且負責協調第一個容器,第一個窗口是作業的
applicationmaster進程需要的,它還負責這個容器啟動失敗後的重啟.appicationmaster
後期會向sheduler來協調作業運行需要的資源.
YARN支持資源保留機制,有時候需要運行特別重要的作業,或者某作業需要的容量比較大,
如何主動在代碼中使用這個功能?
RM的重啟,
早期的RM HA實現中,只做到了不保留工作的重啟,即它只保留了作業的狀態與
運行時所需安全證書等信息,然後重啟之後,nm會殺死正在運行的container並重新註冊到rm上,
相當於重新啟動了整個yarn,只是不需要重新提交作業而已.
近兩年已經實現了保留工作的RM重啟,通過結合從NM,application master來重建容器狀態,原來
運行的作業不需要在rm重啟後被殺死重新運行,在重啟或切換期間它們只是輪詢嘗試,對用戶是透明的.
這些作業運行的元數據信息可能保存在HDFS上,也可以保存在數據庫與ZOOKEEPER上,
改寫存儲的內容,這是ZK的特定,它的節點可以用於分布式鎖類似的功能.
基於文件或leveldb的存儲都不支持fencing的功能.
<property> <description>Enable RM to recover state after starting. If true, then yarn.resourcemanager.store.class must be specified</description> <name>yarn.resourcemanager.recovery.enabled</name> <value>true</value> </property> <property> <description>The class to use as the persistent store.</description> <name>yarn.resourcemanager.store.class</name> <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value> </property> <property> <description>Comma separated list of Host:Port pairs. Each corresponds to a ZooKeeper server (e.g. "127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002") to be used by the RM for storing RM state. This must be supplied when using org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore as the value for yarn.resourcemanager.store.class</description> <name>yarn.resourcemanager.zk-address</name> <value>127.0.0.1:2181</value> </property>
主要翻譯自apache hadoop yarn官網
yarn 與 resource manager ha