Tungsten Fabric SDN — SmartNIC vRouter
838
2025-04-01
YARN 產生背景
MapReduce存在的問題:
1)JobTracker 單點故障。
2)JobTracker 承受的訪問壓力大,影響系統的擴展性。
3)不支持MapReduce之外的計算框架,比如Storm、Spark、Flink
什么是YARN
YARN 是Hadoop2.0版本新引入的資源管理系統,直接從MR1演化而來。 核心思想:
將MR1中JobTracker的資源管理和作業調度兩個功能分開,分別由ResourceManager和ApplicationMaster進程來實現。
1)ResourceManager:負責整個集群的資源管理和調度。
2)ApplicationMaster:負責應用程序相關的事務,比如任務調度、任務監控和容錯等。
YARN的出現,使得多個計算框架運行在一個集群當中。
1)每個應用程序對應一個ApplicationMaster。
2)目前可以支持多種計算框架運行在YARN上面,比如MapReduce、Storm、Spark、Flink
YARN的基本架構
從 YARN 的架構圖來看,它主要由ResourceManager、NodeManager、ApplicationMaster和Container等以下幾個組件構成。
ResourceManager(RM)
RM 是一個全局的資源管理器,負責整個系統的資源管理和分配。它主要由兩個組件構成: 調度器(Scheduler)和應用程序管理器(Applications Manager,ASM)。
YARN 分層結構的本質是 ResourceManager。這個實體控制整個集群并管理應用程序向基礎計算資源的分配。ResourceManager 將各個資源部分(計算、內存、帶寬等)精心安排給基礎 NodeManager(YARN 的每節點代理)。ResourceManager 還與 ApplicationMaster 一起分配資源,與 NodeManager 一起啟動和監視它們的基礎應用程序。在此上下文中,ApplicationMaster 承擔了以前的 TaskTracker 的一些角色,ResourceManager 承擔了 JobTracker 的角色。
(1) 調度器
調度器根據容量、隊列等限制條件(如每個隊列分配一定的資源,最多執行一定數量的作業等),將系統中的資源分配給各個正在運行的應用程序。 該調度器是一個“純調度器”,它不再從事任何與具體應用程序相關的工作。
(2) 應用程序管理器
應用程序管理器負責管理整個系統中所有應用程序,包括應用程序提交、與調度器協商資源以啟動ApplicationMaster、監控ApplicationMaster運行狀態并在失敗時重新啟動它等。
ApplicationMaster(AM)
ApplicationMaster 管理一個在 YARN 內運行的應用程序的每個實例。ApplicationMaster 負責協調來自 ResourceManager 的資源,并通過 NodeManager 監視容器的執行和資源使用(CPU、內存等的資源分配)。請注意,盡管目前的資源更加傳統(CPU 核心、內存),但未來會帶來基于手頭任務的新資源類型(比如圖形處理單元或專用處理設備)。從 YARN 角度講,ApplicationMaster 是用戶代碼,因此存在潛在的安全問題。YARN 假設 ApplicationMaster 存在錯誤或者甚至是惡意的,因此將它們當作無特權的代碼對待。
ApplicationMaster 管理一個在 YARN 內運行的應用程序的每個實例,ApplicationMaster 負責協調來自 ResourceManager 的資源,并通過 NodeManager 監視容器的執行和資源使用(CPU、內存等 的資源分配)。
NodeManager(NM)
NodeManager 管理一個 YARN 集群中的每個節點。NodeManager 提供針對集群中每個節點的服務,從監督對一個容器的終生管理到監視資源和跟蹤節點健康。MRv1 通過插槽管理 Map 和 Reduce 任務的執行,而 NodeManager 管理抽象容器,這些容器代表著可供一個特定應用程序使用的針對每個節點的資源。YARN 繼續使用 HDFS 層。它的主要 NameNode 用于元數據服務,而 DataNode 用于分散在一個集群中的復制存儲服務。
NM是每個節點上的資源和任務管理器,一方面,它會定時地向RM匯報本節點上的資源使用情況和各個Container的運行狀態;另一方面,它接收并處理來自AM的Container啟動/停止等各種請求。
Container
Container 是 YARN 中的資源抽象,它封裝了某個節點上的多維度資源,如內存、CPU、磁盤、網絡等,當AM向RM申請資源時,RM為AM返回的資源便是用Container表示的。YARN會為每個任務分配一個Container,且該任務只能使用該Container中描述的資源。
要使用一個 YARN 集群,首先需要來自包含一個應用程序的客戶的請求。ResourceManager 協商一個容器的必要資源,啟動一個 ApplicationMaster 來表示已提交的應用程序。通過使用一個資源請求協議,ApplicationMaster 協商每個節點上供應用程序使用的資源容器。執行應用程序時,ApplicationMaster 監視容器直到完成。當應用程序完成時,ApplicationMaster 從 ResourceManager 注銷其容器,執行周期就完成了。
通過上面的學習,應該明確的一點是,舊的 Hadoop 架構受到了 JobTracker 的高度約束,JobTracker 負責整個集群的資源管理和作業調度。新的 YARN 架構打破了這種模型,允許一個新 ResourceManager 管理跨應用程序的資源使用,ApplicationMaster 負責管理作業的執行。這一更改消除了一處瓶頸,還改善了將 Hadoop 集群擴展到比以前大得多的配置的能力。此外,不同于傳統的 MapReduce,YARN 允許使用 Message Passing Interface 等標準通信模式,同時執行各種不同的編程模型,包括圖形處理、迭代式處理、機器學習和一般集群計算。
YARN 的工作原理
MapReduce On YARN
MapReduce On YARN
1)YARN 負責資源管理和調度。
2)ApplicationMaster負責任務管理。
MapReduce ApplicationMaster
1)MRAppMaster
2)每個MapReduce作業啟動一個MRAppMaster
3)MRAppMaster負責任務切分、任務調度、任務監控和容錯等。
MRAppMaster任務調度
1)YARN 將資源分配給MRAppMaster
2)MRAppMaster 進一步將資源分配給內部任務
MRAppMaster容錯
1)MRAppMaster運行失敗后,由YARN重新啟動
2)任務運行失敗后,MRAppMaster重新申請資源
YARN HA
ResourceManager HA 由一對Active,Standby結點構成,通過RMStateStore存儲內部數據和主要應用的數據及標記。目前支持的可替代的RMStateStore實現有:基于內存的MemoryRMStateStore,基于文件系統的FileSystemRMStateStore,及基于zookeeper的ZKRMStateStore。 ResourceManager HA的架構模式同NameNode HA的架構模式基本一致,數據共享由RMStateStore,而ZKFC成為 ResourceManager進程的一個服務,非獨立存在。
Hadoop Yarn
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。