1. 程式人生 > >yarn 與 resource manager ha

yarn 與 resource manager ha

using 運行 腦裂 原來 script tor rac start eve

YARN
最初的思想是把hadoop1中的job tracker的功能拆分出來,
把它的資源管理與任務調度功能分成兩個單獨的進程.
yarn體系結構中有兩個進程,resource manager和nodemanger
.
前者主要負責資源分配,後者nodemanager在每一個機器中都有一個進程,
負責container的創建,監控分配的資源(CPU,內存和磁盤與網絡資源),同時
通過心跳匯報這些情況給RM.
applicationmaster是框架特定的作業進程,主要負責與RM申請資源與監控任務
執行的情況.運行在nodemanager上面.
包含兩大組件,Scheduler和ApplicationManager.

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的功能.

<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