yarn的架構設計使其越來越像是乙個雲作業系統,資料處理作業系統。
1、resourcemanager
(1) 排程器
(2) 應用程式管理器
管理yarn內執行的應用程式的每個例項。
功能:資料切分
為應用程式申請資源並進一步分配給內部任務。
任務監控與容錯
負責協調來自resourcemanager的資源,並通過nodemanager監視容易的執行和資源使用情況。
3. nodemanager(nm)
nodemanager整個集群有多個,負責每個節點上的資源和使用。
功能:單個節點上的資源管理和任務。
處理來自於resourcemanager的命令。
nodemanager管理著抽象容器,這些抽象容器代表著一些特定程式使用針對每個節點的資源。
nodemanager定時地向rm匯報本節點上的資源使用情況和各個container的執行狀態(cpu和記憶體等資源)
4.container
container是yarn中的資源抽象,它封裝了某個節點上的多維度資源,如記憶體、cpu、磁碟、網路等,當am向rm申請資源時,rm為am返回的資源便是用container表示的。yarn會為每個任務分配乙個container,且該任務只能使用該container中描述的資源。需要注意的是,container不同於mrv1中的slot,它是乙個動態資源劃分單位,是根據應用程式的需求動態生成的。目前為止,yarn僅支援cpu和記憶體兩種資源,且使用了輕量級資源隔離機制cgroups進行資源隔離。
功能:對task環境的抽象
描述一系列資訊
任務執行資源的集合(cpu、記憶體、io等)
任務執行環境
二、yarn的資源管理
1、資源排程和隔離是yarn作為乙個資源管理系統,最重要且最基礎的兩個功能。資源排程由resourcemanager完成,而資源隔離由各個nodemanager實現。
2、resourcemanager將某個nodemanager上資源分配給任務(這就是所謂的「資源排程」)後,nodemanager需按照要求為任務提供相應的資源,甚至保證這些資源應具有獨占性,為任務執行提供基礎和保證,這就是所謂的資源隔離。
3、當談及到資源時,我們通常指記憶體、cpu、io三種資源。hadoop yarn目前為止僅支援cpu和記憶體兩種資源管理和排程。
4、記憶體資源多少決定任務的生死,如果記憶體不夠,任務可能執行失敗;相比之下,cpu資源則不同,它只會決定任務的快慢,不會對任務的生死產生影響。
yarn的記憶體管理:
yarn允許使用者配置每個節點上可用的物理記憶體資源,注意,這裡是「可用的」,因為乙個節點上記憶體會被若干個服務貢享,比如一部分給了yarn,一部分給了hdfs,一部分給了hbase等,yarn配置的只是自己可用的,配置引數如下:
yarn.nodemanager.resource.memory-mb
表示該節點上yarn可以使用的物理記憶體總量,預設是8192m,注意,如果你的節點記憶體資源不夠8g,則需要調減這個值,yarn不會智慧型的探測節點物理記憶體總量。
yarn.nodemanager.vmem-pmem-ratio
任務使用1m物理記憶體最多可以使用虛擬記憶體量,預設是2.1
yarn.nodemanager.pmem-check-enabled
是否啟用乙個執行緒檢查每個任務證使用的物理記憶體量,如果任務超出了分配值,則直接將其kill,預設是true。
yarn.nodemanager.vmem-check-enabled
是否啟用乙個執行緒檢查每個任務證使用的虛擬記憶體量,如果任務超出了分配值,則直接將其kill,預設是true。
yarn.scheduler.minimum-allocation-mb
單個任務可以使用最小物理記憶體量,預設1024m,如果乙個任務申請物理記憶體量少於該值,則該對應值改為這個數。
yarn.scheduler.maximum-allocation-mb
單個任務可以申請的最多的記憶體量,預設8192m
yarn cpu管理:
目前cpu被劃分為虛擬cpu,這裡的虛擬cpu是yarn自己引入的概念,初衷是考慮到不同節點cpu效能可能不同,每個cpu具有計算能力也是不一樣的,比如,某個物理cpu計算能力可能是另外乙個物理cpu的2倍,這時候,你可以通過為第乙個物理cpu多配置幾個虛擬cpu彌補這種差異。使用者提交作業時,可以指定每個任務需要的虛擬cpu個數。在yarn中,cpu相關配置引數如下:
yarn.nodemanager.resource.cpu-vcores
表示該節點上yarn可使用的虛擬cpu個數,預設是8個,注意,目前推薦將該值為與物理cpu核數相同。如果你的節點cpu合數不夠8個,則需要調減小這個值,而yarn不會智慧型的探測節點物理cpu總數。
yarn.scheduler.minimum-allocation-vcores
單個任務可申請最小cpu個數,預設1,如果乙個任務申請的cpu個數少於該數,則該對應值被修改為這個數
yarn.scheduler.maximum-allocation-vcores
單個任務可以申請最多虛擬cpu個數,預設是32.
YARN架構設計詳解
yarn的架構設計使其越來越像是乙個雲作業系統,資料處理作業系統。1 排程器 2 應用程式管理器 管理yarn內執行的應用程式的每個例項。功能 資料切分 為應用程式申請資源並進一步分配給內部任務。任務監控與容錯 負責協調來自resourcemanager的資源,並通過nodemanager監視容易的...
yarn的架構設計
1.client向yarn提交應用程式 2.rm為應用程式分配乙個container,並於nm通訊,告訴它在container中啟動aplicationmaster 3.aplicationmaster向rm註冊,然後傳送為各個任務申請資源的請求,並監控task的執行狀態直到結束 4.aplicat...
salesforce 架構設計 從架構設計到架構師
因為碎片化的時間多了,所以開始刷起某乎了,關注了架構相關的板塊,也順手回答了一些問題。發現有很多同道中人正在經歷著我前兩年經歷的階段,對於做架構沒有相對具象的一些理解,更沒有系統化的認識。所以把最近回答的一些內容整理一下,權當記錄,留給3年後的自己 按慣例,容許我裝x開頭 一 架構的定義 在軟體開發...