Apache YARN (Yet Another Resource Negotiator) 是 Hadoop 2.0 引入的集群资源管理系统。用户可以将各种服务框架部署在 YARN 上,由 YARN 进行统一地管理和资源分配。
ResourceManager
通常在独立的机器上以后台进程的形式运行,它是整个集群资源的主要协调者和管理者。ResourceManager
负责给用户提交的所有应用程序分配资源,它根据应用程序优先级、队列容量、ACLs、数据位置等信息,做出决策,然后以共享的、安全的、多租户的方式制定分配策略,调度集群资源。
NodeManager
是 YARN 集群中的每个具体节点的管理者。主要负责该节点内所有容器的生命周期的管理,监视资源和跟踪节点健康。具体如下:
ResourceManager
注册并定时发送心跳消息,等待 ResourceManager
的指令;Container
的生命周期,监控 Container
的资源使用情况;ApplicationMaster
的需要,在启动 Container
之前将需要的程序及其依赖拷贝到本地。在用户提交一个应用程序时,YARN 会启动一个轻量级的进程 ApplicationMaster
。ApplicationMaster
负责协调来自 ResourceManager
的资源,并通过 NodeManager
监视容器内资源的使用情况,同时还负责任务的监控与容错。具体如下:
ResourceManager
申请资源,监控申请的资源的使用情况;