Docker 的優點
895
2025-03-31
為了實現一個Hadoop集群的集群共享、可伸縮性和可靠性,并消除早期MapReduce框架中的JobTracker性能瓶頸,Hadoop社區引入了統一的資源管理框架YARN。
YARN是將JobTracker的兩個主要功能(資源管理和作業調度/監控)分離,主要方法是創建一個全局的ResourceManager(RM)和若干個針對應用程序的ApplicationMaster(AM)。
在原生的YARN資源調度機制中,如果先提交的MapReduce Job長時間地占據整個Hadoop集群的資源,會使得后提交的Job一直處于等待狀態,直到Running中的Job執行完并釋放資源。
MRS集群提供了任務優先級調度機制。此機制允許用戶定義不同優先級的Job,后啟動的高優先級Job能夠獲取運行中的低優先級Job釋放的資源;低優先級Job未啟動的計算容器被掛起,直到高優先級Job完成并釋放資源后,才被繼續啟動。
YARN結構
YARN分層結構的本質是ResourceManager。這個實體控制整個集群并管理應用程序向基礎計算資源的分配。ResourceManager將各個資源部分(計算、內存、帶寬等)精心安排給基礎NodeManager(YARN的每節點代理)。ResourceManager還與Application Master一起分配資源,與NodeManager一起啟動和監視它們的基礎應用程序。
Application Master管理一個在YARN內運行的應用程序的每個實例。Application Master負責協調來自ResourceManager的資源,并通過NodeManager監視容器的執行和資源使用(CPU、內存等的資源分配)。
NodeManager管理一個YARN集群中的每個節點。NodeManager提供針對集群中每個節點的服務,從監督對一個容器的終生管理到監視資源和跟蹤節點健康。MRv1通過插槽管理Map和Reduce任務的執行,而NodeManager管理抽象容器,這些容器代表著可供一個特定應用程序使用的針對每個節點的資源。
名稱
描述
Client
YARN Application客戶端,用戶可以通過客戶端向ResourceManager提交任務,查詢Application運行狀態等。
ResourceManager(RM)
負責集群中所有資源的統一管理和分配。接收來自各個節點(NodeManager)的資源匯報信息,并根據收集的資源按照一定的策略分配給各個應用程序。
NodeManager(NM)
NodeManager(NM)是YARN中每個節點上的代理,管理Hadoop集群中單個計算節點,包括與ResourceManger保持通信,監督Container的生命周期管理,監控每個Container的資源使用(內存、CPU等)情況,追蹤節點健康狀況,管理日志和不同應用程序用到的附屬服務(auxiliary service)。
ApplicationMaster(AM)
即圖中的App Mstr,負責一個Application生命周期內的所有工作。包括:與RM調度器協商以獲取資源;將得到的資源進一步分配給內部任務(資源的二次分配);與NM通信以啟動/停止任務;監控所有任務運行狀態,并在任務運行失敗時重新為任務申請資源以重啟任務。
Container
Container是YARN中的資源抽象,封裝了某個節點上的多維度資源,如內存、CPU、磁盤、網絡等(目前僅封裝內存和CPU),當AM向RM申請資源時,RM為AM返回的資源便是用Container表示。YARN會為每個任務分配一個Container,且該任務只能使用該Container中描述的資源。
在YARN中,資源調度器是以層級隊列方式組織資源的,這種組織方式有利于資源在不同隊列間分配和共享,進而提高集群資源利用率。如下圖所示,Superior Scheduler和Capacity Scheduler的核心資源分配模型相同。
調度器會維護隊列的信息。用戶可以向一個或者多個隊列提交應用。每次NM心跳的時候,調度器會根據一定規則選擇一個隊列,再選擇隊列上的一個應用,并嘗試在這個應用上分配資源。若因參數限制導致分配失敗,將選擇下一個應用。選擇一個應用后,調度器會處理此應用的資源申請。其優先級從高到低依次為:本地資源的申請、同機架的申請,任意機器的申請。
YARN原理
新的Hadoop MapReduce框架被命名為MRv2或YARN。YARN主要包括ResourceManager、ApplicationMaster與NodeManager三個部分。
ResourceManager
RM是一個全局的資源管理器,負責整個系統的資源管理和分配。主要由兩個組件構成:調度器(Scheduler)和應用程序管理器(Applications Manager)。調度器根據容量、隊列等限制條件(如每個隊列分配一定的資源,最多執行一定數量的作業等),將系統中的資源分配給各個正在運行的應用程序。調度器僅根據各個應用程序的資源需求進行資源分配,而資源分配單位用一個抽象概念Container表示。Container是一個動態資源分配單位,將內存、CPU、磁盤、網絡等資源封裝在一起,從而限定每個任務使用的資源量。此外,該調度器是一個可插拔的組件,用戶可根據自己的需要設計新的調度器,YARN提供了多種直接可用的調度器,比如Fair Scheduler和Capacity Scheduler等。
應用程序管理器負責管理整個系統中所有應用程序,包括應用程序提交、與調度器協商資源以啟動ApplicationMaster、監控ApplicationMaster運行狀態并在失敗時重新啟動等。
NodeManager
NM是每個節點上的資源和任務管理器,一方面,會定時向RM匯報本節點上的資源使用情況和各個Container的運行狀態;另一方面,接收并處理來自AM的Container啟動/停止等請求。
ApplicationMaster
AM負責一個Application生命周期內的所有工作。包括:
與RM調度器協商以獲取資源。
將得到的資源進一步分配給內部的任務(資源的二次分配)。
與NM通信以啟動/停止任務。
監控所有任務運行狀態,并在任務運行失敗時重新為任務申請資源以重啟任務。
Yarn作業提交示例
MRS集群的創建您可參考創建集群。
Yarn客戶端的安裝您可以參考安裝客戶端。
以客戶端安裝用戶,登錄安裝客戶端的節點。執行以下命令,切換到客戶端安裝目錄。
cd /opt/Bigdata/client source bigdata_env
若集群開啟了Kerberos認證,需提前準備具有Kafka操作權限的用戶并進行認證。
kinit 組件業務用戶
提交一個Yarn任務:
yarn jar HDFS/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar pi 100 10
登錄集群FusionInsight Manager主頁界面,單擊進入“Yarn”,打開“ResourceManager(主機名,主)”,可以進入Yarn WebUI頁面。
切換為作業執行用戶,可查看當前作業的運行詳情及資源占用情況。
YARN作業運行完成。
... Peak Reduce Physical memory (bytes)=242061312 Peak Reduce Virtual memory (bytes)=5654482944 Shuffle Errors BAD_ID=0 CONNECTION=0 IO_ERROR=0 WRONG_LENGTH=0 WRONG_MAP=0 WRONG_REDUCE=0 File Input Format Counters Bytes Read=11800 File Output Format Counters Bytes Written=97 Job Finished in 115.117 seconds Estimated value of Pi is 3.14800000000000000000
關于YARN租戶及提交作業過程中的調度介紹,請參考《MRS 多租戶介紹》。
好了,本期云小課就介紹到這里,快去體驗MapReduce(MRS)更多功能吧!猛戳這里
EI智能體 MapReduce Yarn
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。