Apache Hadoop Yarn簡介
Yarn的基本理念是將資源管理與任務(wù)調(diào)度分離到不同的守護進程中去郁副》埽基于這個理念Yarn的設(shè)計包含一個全局資源管理器(ResourceManager)以及針對每個應(yīng)用一個ApplicationMaster饺窿。這里的應(yīng)用指一個job或者構(gòu)成DAG圖的多個job法希。
ResourceManager以及NodeManager構(gòu)成了計算框架。ResourceManage擁有為系統(tǒng)中所有應(yīng)用分配資源的絕對權(quán)力疙渣。NodeManager作為每個機器上的容器,管理系統(tǒng)資源(cpu俗冻,memory礁叔,disk,network)的使用情況迄薄,并向ResourceManager或者Scheduler報告琅关。
ApplicationMaster實際上是一個特殊的框架類庫,它持有ResourceManager分配的資源讥蔽,并與NodeManger協(xié)同工作涣易,從而執(zhí)行和管理任務(wù)。
Yarn的架構(gòu)如下:
ResourceManager包含兩個重要的組件:Scheduler與ApplicationsManager冶伞。
Scheduler根據(jù)一些耳熟能詳?shù)募s束(容量新症、隊列等)為運行的應(yīng)用分配資源。Scheduler是一個純粹的調(diào)度器响禽,所以它不會管理或者記錄應(yīng)用的狀態(tài)徒爹。并且,它并不會負責(zé)重啟因為應(yīng)用故障或者硬件故障導(dǎo)致失敗的任務(wù)芋类。Scheduler會根據(jù)應(yīng)用的需求進行資源分配隆嗅,它是基于一個抽象的概念:資源Container,完成這項功能侯繁。此Container包含了諸如磁盤胖喳、內(nèi)存、CPU贮竟、網(wǎng)絡(luò)IO等信息丽焊。
Scheduler目前對于資源分配的策略是可插拔的,已有的CapacityScheduler以及FairScheduler是兩個插件樣例坝锰。
ApplicationsMaster負責(zé)接收提交的job粹懒,決定初始容器運行ApplicationMaster,并在ApplicationMaster失敗時重啟顷级。每個ApplicationMater負責(zé)與Scheduler議定需要的資源凫乖,跟蹤它們的狀態(tài),以及管理任務(wù)進度弓颈。