Hadoop MapReduce2.0(Yarn)

版權聲明:本文爲博主原創文章,未經博主贊成不得轉載。

https://blog.csdn.net/cqboy1991/article/details/25056283 css

MapReduce2.0(Yarn)

MapReduce2.0是在Hadoop0.23開始採用的,叫作MapReduce2.0或者MRv2或者Yarn。
html

MRv2的主要思想是把jobtracker的任務分爲兩個基本的功能。一個是資源管理,一個是任務監控,這兩個任務分別用不一樣的進程來執行。這個想法使擁有一個全局的資源管理器(ResourceManager)和每個應用程序的應用程序管理器(ApplicationMaster)。一個應用程序要麼使用傳統的MapReduce任務來執行,要麼以DAG形式的任務來執行。網絡

ResourceManager和每個節點(NodeManager)組成了處理數據的框架,ResourceManager是整個系統資源的終於決策者。實際上,每個應用程序的ApplicationMaster是框架詳細的Lib。它的任務是從ResourceManager出得到資源,並在NodeManager上執行和監控任務。框架

ResourceManager有兩個基本的組件:調度器(Schedule)和應用程序管理器(ApplicationManager)。oop

調度器(Schedule)負責分配資源到各類各樣正在執行的應用程序中。調度器不執行監控和跟蹤應用程序的狀態。在這個意義上說。它是純粹的調度器。此外。它也不保證從新啓動失敗的任務。調度器是基於資源的請求來執行它的調度功能的,它是基於資源容器的抽象概念的,這樣的資源容器包含內存、cpu、磁盤、網絡等。在第一個版本號中僅僅支持內存。調度器支持可插入的策略,post

ApplicationManager負責接送提交的做業,協商第一個執行該任務的容器,並提供失敗做業的從新啓動。spa

NodeManager是每個節點的框架代理。它負責監控資源的使用狀況。並報告給ResourceManager..net

每個應用的ApplicationMaster 負責與調度器談判資源佔用的containers數量。追蹤狀態和監控進程。
設計

過程是:代理

client提交一個Application到Yarn Resource Manager,client經過ClientRMProtocol和ResourceManager通信。首先經過getNewApplication請求,得到一個ApplicationId。以後便可以經過submitApplication提交Application。在調用submitApplication時,client需要向ResourceManager提供充足的信息,這些信息用於載入第一次執行該程序的container,the ApplicationMaster。程序需要提供的信息包含本地文件、jars包、執行時需要的命令。及Unix環境設計等。以後Yarn ResourceManager在已經分配的container中載入ApplicationMaster。

以後ApplicationMaster經過AMRMProtocol和ResourceManager通訊。

首先。ApplicationMaster需要註冊到ResourceManager中,爲了完畢分配給它的任務。ApplicationMaster以後便經過AMRMProtocol請求和接收containers,一旦一個container被分配給它。ApplicationMaster便和NodeManager通訊,調用ContainerManager.startContainer去載入container。在載入container時,ApplicationMaster需要指定ContainerLaunchContext,ContainerLaunchContext和ApplicationSubmissionContext比較相似。它含有載入信息。當任務完畢時,ApplicationMaster經過AMRMProtocol.finishApplicationMaster通知ResourceManager。

同一時候。clientResourceManager來監控Application的狀態,或者直接經過ApplicationMaster來了解程序的狀態。client也可以經過ClientRMProtocol.forceKillApplication來終止程序執行。

相關文章
相關標籤/搜索