Yarn

Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而MapReduce等运算程序则相当于运行于操作系统之上的应用程序。

Yarn 是 Yet Another Resource Negotiator(另一种资源协调者)的缩写。

Yarn 是一个 通用的资源管理系统调度平台,可以为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。

虽然 Yarn 属于Hadoop的一部分,但是Yarn不仅仅能运行 MapReduce,还可以运行 Tez、HBase、Spark、Flink等等程序,理论上支持各种计算程序。Yarn不关心你做的什么,只负责管理资源(内存 和 CPU)。

Yarn架构

Yarn由 ResourceManager、NodeManager、ApplicationMaster 和 Container 等组件构成。

yarn-struct.jpg

ResourceManager、NodeManager 是集群物理层面的组件,在Hadoop集群搭建过程中需要明确分配Resourcemanager是哪台服务器、NodeManager是哪台服务器。

ApplicationMaster 简称 AppMaster。在 MapReduce程序中的 MRAppMaster 就是 AppMaster的一个具体实现。属于 App 应用层面,Yarn不关心该组件,而是由具体的应用程序(MapReduce、Spark等)去具体实现。

ResourceManager、NodeManager、AppMaster 合称 Yarn的三大组件。

Container容器:是硬件资源的抽象,多个程序之间就可以隔离运行