Yarn和ZooKeeper没联系。Yarn配置的是ResourceManage资源管理;ZooKeeper是一个分布式的、开放源码的分布式应用程序协调服务;它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。
基本架构
Yarn是Hadoop 2.0中的资源管理系统,它的设计思想是将MRv1中的JobTracker拆分成了两个独立的服务:一个全局的资源管理器Scheduler和每个应用程序特有的ApplicationMaster。其中Scheduler负责整个系统的资源管理和分配,而ApplicationMaster负责单个应用程序的管理。这两个服务均由ResourceManager管理。
Yarn的重要组件
Yarn主要由ResourceManager、NodeManager、ApplicationMaster和Container等几个组件构成。
ResourceManager(RM)
RM是一个全局的资源管理器,负责整个系统的资源管理和分配。它主要由两个组件构成:调度器(Scheduler)和应用程序管理器(Applications Manager,ASM)。
调度器(YarnScheduler)根据容量、队列等限制条件(如每个队列分配一定的资源,最多执行一定数量的作业等),将系统中的资源分配给各个正在运行的应用程序。
应用程序管理器(Applications Manager)负责管理整个系统中所有应用程序,包括应用程序提交、与调度器协商资源以启动ApplicationMaster、监控ApplicationMaster运行状态并在失败时重新启动它等。
NodeManager(NM)
NM是每个节点上的资源和任务管理器,一方面,它会定时地向RM汇报本节点上的资源使用情况和各个Container的运行状态;另一方面,它接收并处理来自AM的Container启动/停止等各种请求。
ApplicationMaster(AM)
用户提交的每个应用程序均包含1个AM,主要功能包括:
- 与RM调度器协商以获取资源(用Container表示);
- 将得到的任务进一步分配给内部的任务;
- 与NM通信以启动/停止任务;
- 监控所有任务运行状态,并在任务运行失败时重新为任务申请资源以重启任务。