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)。并且,它并不會負(fù)責(zé)重啟因為應(yīng)用故障或者硬件故障導(dǎo)致失敗的任務(wù)。Scheduler會根據(jù)應(yīng)用的需求進行資源分配,它是基于一個抽象的概念:資源Container,完成這項功能。此Container包含了諸如磁盤、內(nèi)存、CPU、網(wǎng)絡(luò)IO等信息。
Scheduler目前對于資源分配的策略是可插拔的,已有的CapacityScheduler以及FairScheduler是兩個插件樣例。
ApplicationsMaster負(fù)責(zé)接收提交的job,決定初始容器運行ApplicationMaster,并在ApplicationMaster失敗時重啟。每個ApplicationMater負(fù)責(zé)與Scheduler議定需要的資源,跟蹤它們的狀態(tài),以及管理任務(wù)進度。
