Apache YARN是Hadoop的集群资源管理系统.
YARN具有足够的通用性,不仅可以改善MapReduce的实现,还可以支持其他的分布式计算模式.
YARN提供请求和使用集群资源的API,但很少直接用于用户代码,用户代码中用的是分布式计算框架提供的更高层的API.
一些分布式计算框架作为YARN应用运行在集群计算层和集群存储层.
4.1剖析YARN应用运行机制
YARN通过两类长期运行的守护进程提供自己的核心服务:管理集群上资源使用的资源管理器,运行在集群中所有节点上且能够启动和监视容器的节点管理器.
容器用于执行特定应用程序的进程,每个容器都有资源限制.
在YANRN上运行一个应用:首先,用户端联系资源管理器,要求它运行一个application master进程.然后资源管理器找到一个能够在容器中启动applicathon master的节点管理器.
4.1.1 资源请求
YARN有一个灵活的资源请求模型.当请求多个容器时,可以指定多个容器需要的计算机资源数量,还可以指定对容器的本地限制要求.
本地化对于确保分布式数据处理算法高效使用集群贷款非常重要.本地限制可以用于申请位于指定节点或机架,或集群中任意位置(机架外)的容器.
通常情况下,当启动一个容器用于处理HDFS数据块时,应用将会向这样的节点申请容器:存储该数据块三个复本的节点,或是存储这些复本的机架中的一个节点.如果都申请失败,则申请集群中的任意节点.
YARN应用可以在运行中的任意时刻提出资源申请.
Spark采用在最开始提出所有的请求的方式,在集群上启动固定数量的执行器.
MapRaduce在最开始时申请map任务容器,reduce任务容器的启用则放在后期.同样,如果任何任务出现失败,将会另外申请容器以重新运行失败的任务.
4.1.2应用生命期
应用到用户运行的作业之间的映射关系分类: