YARN是一種新型的Hadoop通用資源管理系統(tǒng)。
標簽:開發(fā)商: Apache
產(chǎn)品類型:控件
產(chǎn)品功能:數(shù)據(jù)庫工具
平臺語言:
開源水平:不提供源碼
本產(chǎn)品的分類與介紹僅供參考,具體以商家網(wǎng)站介紹為準,如有疑問請來電 023-68661681 咨詢。
Apache Hadoop YARN(Yet Another Resource Negotiator)是Apache Hadoop為完善大數(shù)據(jù)處理,而推出的新型集群框架處理模型。?相對于最初的MapReduce,YARN提供了更加優(yōu)秀的資源管理器,讓Storm等流處理框架同樣可以運行在Hadoop集群之上。
YARN從某種意義上說可算做是一個云操作系統(tǒng),它負責集群的資源管理。在操作系統(tǒng)之上可以開發(fā)各類的應用程序,例如批處理MapReduce、流式作業(yè)Storm以及實時型服務Storm等。這些應用可以同時利用Hadoop集群的計算能力和豐富的數(shù)據(jù)存儲模型,共享同一個Hadoop 集群和駐留在集群上的數(shù)據(jù)。此外,這些新的框架還可以利用YARN的資源管理器,提供新的應用管理器實現(xiàn)。
* 關(guān)于本產(chǎn)品的分類與介紹僅供參考,精準產(chǎn)品資料以官網(wǎng)介紹為準,如需購買請先行測試。
經(jīng)典 MapReduce 的最嚴重的限制主要關(guān)系到可伸縮性、資源利用和對與 MapReduce 不同的工作負載的支持。在 MapReduce 框架中,作業(yè)執(zhí)行受兩種類型的進程控制:
一個稱為JobTracker的主要進程,它協(xié)調(diào)在集群上運行的所有作業(yè),分配要在 TaskTracker 上運行的 map 和 reduce 任務。
許多稱為TaskTracker的下級進程,它們運行分配的任務并定期向 JobTracker 報告進度。
大型的 Hadoop 集群顯現(xiàn)出了由單個 JobTracker 導致的可伸縮性瓶頸。依據(jù) Yahoo!,在集群中有 5,000 個節(jié)點和 40,000 個任務同時運行時,這樣一種設計實際上就會受到限制。由于此限制,必須創(chuàng)建和維護更小的、功能更差的集群。
此外,較小和較大的 Hadoop 集群都從未最高效地使用他們的計算資源。在 Hadoop MapReduce 中,每個從屬節(jié)點上的計算資源由集群管理員分解為固定數(shù)量的 map 和 reduce slot,這些 slot 不可替代。設定 map slot 和 reduce slot 的數(shù)量后,節(jié)點在任何時刻都不能運行比 map slot 更多的 map 任務,即使沒有 reduce 任務在運行。這影響了集群的利用率,因為在所有 map slot 都被使用(而且我們還需要更多)時,我們無法使用任何 reduce slot,即使它們可用,反之亦然。
最后但同樣重要的是,Hadoop 設計為僅運行 MapReduce 作業(yè)。隨著替代性的編程模型(比如 Apache Giraph 所提供的圖形處理)的到來,除 MapReduce 外,越來越需要為可通過高效的、公平的方式在同一個集群上運行并共享資源的其他編程模型提供支持。
YARN 是下一代 Hadoop 計算平臺,它進行了如下改變:
ResourceManager 代替集群管理器
ApplicationMaster 代替一個專用且短暫的 JobTracker
NodeManager 代替 TaskTracker
一個分布式應用程序代替一個 MapReduce 作業(yè)
RM是一個全局的資源管理器,負責整個系統(tǒng)的資源管理和分配。它主要由兩個組件構(gòu)成:調(diào)度器(Scheduler)和應用程序管理器(Applications Manager,ASM)。
調(diào)度器:調(diào)度器根據(jù)容量、隊列等限制條件(如每個隊列分配一定的資源,最多執(zhí)行一定數(shù)量的作業(yè)等),將系統(tǒng)中的資源分配給各個正在運行的應用程序。需要注意的是,該調(diào)度器是一個“純調(diào)度器”,它不再從事任何與具體應用程序相關(guān)的工作,比如不負責監(jiān)控或者跟蹤應用的執(zhí)行狀態(tài)等,也不負責重新啟動因應用執(zhí)行失敗或者硬件故障而產(chǎn)生的失敗任務,這些均交由應用程序相關(guān)的ApplicationMaster完成。調(diào)度器僅根據(jù)各個應用程序的資源需求進行資源分配,而資源分配單位用一個抽象概念“資源容器”(Resource Container,簡稱Container)表示,Container是一個動態(tài)資源分配單位,它將內(nèi)存、CPU、磁盤、網(wǎng)絡等資源封裝在一起,從而限定每個任務使用的資源量。此外,該調(diào)度器是一個可插拔的組件,用戶可根據(jù)自己的需要設計新的調(diào)度器,YARN提供了多種直接可用的調(diào)度器,比如Fair Scheduler和Capacity Scheduler等。
應用程序管理器:應用程序管理器負責管理整個系統(tǒng)中所有應用程序,包括應用程序提交、與調(diào)度器協(xié)商資源以啟動ApplicationMaster、監(jiān)控ApplicationMaster運行狀態(tài)并在失敗時重新啟動它等。
用戶提交的每個應用程序均包含一個AM,主要功能包括:
與RM調(diào)度器協(xié)商以獲取資源(用Container表示);
將得到的任務進一步分配給內(nèi)部的任務(資源的二次分配);
與NM通信以啟動/停止任務;
監(jiān)控所有任務運行狀態(tài),并在任務運行失敗時重新為任務申請資源以重啟任務。
NM是每個節(jié)點上的資源和任務管理器,一方面,它會定時地向RM匯報本節(jié)點上的資源使用情況和各個Container的運行狀態(tài);另一方面,它接收并處理來自AM的Container啟動/停止等各種請求。
Container是YARN中的資源抽象,它封裝了某個節(jié)點上的多維度資源,如內(nèi)存、CPU、磁盤、網(wǎng)絡等,當AM向RM申請資源時,RM為AM返回的資源便是用Container表示。YARN會為每個任務分配一個Container,且該任務只能使用該Container中描述的資源。
ResourceManager、NodeManager 和容器都不關(guān)心應用程序或任務的類型。所有特定于應用程序框架的代碼都轉(zhuǎn)移到它的 ApplicationMaster,以便任何分布式框架都可以受 YARN 支持 — 只要有人為它實現(xiàn)了相應的 ApplicationMaster。
得益于這個一般性的方法,Hadoop YARN 集群運行許多不同工作負載的夢想才得以實現(xiàn)。想像一下:您數(shù)據(jù)中心中的一個 Hadoop 集群可運行 MapReduce、Giraph、Storm、Spark、Tez/Impala、MPI 等。
單一集群方法明顯提供了大量優(yōu)勢,其中包括:
更高的集群利用率,一個框架未使用的資源可由另一個框架使用
更低的操作成本,因為只有一個 “包辦一切的” 集群需要管理和調(diào)節(jié)
更少的數(shù)據(jù)移動,無需在 Hadoop YARN 與在不同機器集群上運行的系統(tǒng)之間移動數(shù)據(jù)
管理單個集群還會得到一個更環(huán)保的數(shù)據(jù)處理解決方案。使用的數(shù)據(jù)中心空間更少,浪費的硅片更少,使用的電源更少,排放的碳更少,這只是因為我們在更小但更高效的 Hadoop 集群上運行同樣的計算。
更新時間:2016-01-25 11:45:33.000 | 錄入時間:2016-01-22 15:44:41.000 | 責任編輯:陳俊吉