Apache Hadoop Yarn简介
Yarn的基本理念是将资源管理与任务调度分离到不同的守护进程中去。基于这个理念Yarn的设计包含一个全局资源管理器(ResourceManager)以及针对每个应用一个ApplicationMaster。这里的应用指一个job或者构成DAG图的多个job。
ResourceManager以及NodeManager构成了计算框架。ResourceManage拥有为系统中所有应用分配资源的绝对权力。NodeManager作为每个机器上的容器,管理系统资源(cpu,memory,disk,network)的使用情况,并向ResourceManager或者Scheduler报告。
ApplicationMaster实际上是一个特殊的框架类库,它持有ResourceManager分配的资源,并与NodeManger协同工作,从而执行和管理任务。
Yarn的架构如下:
ResourceManager包含两个重要的组件:Scheduler与ApplicationsManager。
Scheduler根据一些耳熟能详的约束(容量、队列等)为运行的应用分配资源。Scheduler是一个纯粹的调度器,所以它不会管理或者记录应用的状态。并且,它并不会负责重启因为应用故障或者硬件故障导致失败的任务。Scheduler会根据应用的需求进行资源分配,它是基于一个抽象的概念:资源Container,完成这项功能。此Container包含了诸如磁盘、内存、CPU、网络IO等信息。
Scheduler目前对于资源分配的策略是可插拔的,已有的CapacityScheduler以及FairScheduler是两个插件样例。
ApplicationsMaster负责接收提交的job,决定初始容器运行ApplicationMaster,并在ApplicationMaster失败时重启。每个ApplicationMater负责与Scheduler议定需要的资源,跟踪它们的状态,以及管理任务进度。