1. 程式人生 > >Hadoop Yarn原始碼閱讀系列(一)Yarn架構

Hadoop Yarn原始碼閱讀系列(一)Yarn架構

Yarn的基本思想是將JobTracker的兩大主要職能:資源管理、作業排程/監控拆分為兩個獨立的程序:一個全域性的ResourceManager和與每個應用對應的ApplicationMaster(AM)。ResourceManager和每個節點的NodeManager(NM)組成了全新的通用作業系統,以分散式的方式管理應用程式。

ResourceManager擁有為系統中所有應用的資源分配的決定權。對應於每個應用程式的ApplicationMaster是框架相關的,負責與ResourceManager協商資源,以及與NodeManager協同工作來執行和監控各個任務。

ResourceManager有一個可插拔的排程器元件--Scheduler,負責為執行中的各種應用分配資源,分配時會受到容量,佇列及其他因素的制約。Scheduler是一個純粹的排程器,不負責應用程式的監控和狀態跟蹤,也不保證在應用程式失敗或者硬體失敗的情況下對Task的重啟。Scheduler基於應用程式的資源需求來執行其排程功能,使用了叫做資源Container的抽象概念,其中包括了多種資源維度,如記憶體,CPU,磁碟以及網路。

NodeManager是與每臺機器對應的從屬程序(Salve),負責啟動應用程式的Container,監控他們的資源使用情況(CPU、記憶體、磁碟和網路),並且報告給ResourceManager。

每個應用程式的ApplicationMaster負責與Scheduler協商合適的Container,跟蹤應用程式的狀態,以及監控他們的進度。從系統的角度講,ApplicationMaster也是以一個普通的Container的身份執行。

architecture

在新的YARN系統下,MapReduce的一個關鍵實現細節是,在不做大的修改下重用現有的MapReduce框架。這是確保與現有MapReduce應用和使用者相容性的重要步驟。