关于ResourceManager的高可用可以查看参考文档,也可参考这个配置


概述

更多关于yarn的架构和工作原理的细节,可以查看:参考文档
关于hadoop、yarn、mapreduce、spark之间的关系,可以用一句话来概括,hadoop提供了分布式文件系统hdfs,yarn提供了集群管理功能,可以管理MapReduce、Spark、Tez、storm等计算框架。
下面介绍yarn中的组件。


RM

ResourceManager(简称RM)分为Scheduler和ApplicationsManager(简称ASM),其中:


AM

AM在申请到containers之后,会与NM通信启动任务。AM既可以通过RM的心跳回复获取containers完成情况,也可以直接通过NM来主动监测启动的containers,在任务执行失败时,AM负责重启它们。yarn自带了两个AM,其中一个是用于演示AM编写方法的实例程序distributedshell,另外一个是运行MapReduce应用程序的AM—MRAppMaster。

综上所述,RM负责监控AM,AM负责监控任务;AM完成任务的容错,RM完成应用程序的调度。因此可以说,yarn把MapReduce 1.0中的JobTracker分为了RM和AM两部分。


NM

NM负责管理单个节点上的资源,一方面它会定时向RM汇报本节点的资源使用情况和各个container的运行状态,另外一方面它接收并处理来自AM的Container启动/停止等各种请求。


Container

Container是yarn中资源分配的基本单位,Container抽象的封装了多个维度上的资源,比如:CPU、内存、磁盘、网络等。与MapReduce 1.0中的map slot 和 reduce slot不同,Container是动态的;目前yarn只支持CPU和内存两种资源,且使用cgroups进行资源隔离。


配置

通信相关的配置

通常情况下,只要配置好 yarn.resourcemanager.hostname 属性即可。如果什么都没配置的话,可能会因为这些地址使用127.0.0.1,而导致Client、AM、NM无法与RM进行通信。

Container相关的配置

NM相关的配置

NM是运行在集群中的节点上的,所以NM的内存和虚拟CPU数量,不应该高于其所在节点的物理内存和CPU核心数;Container是NM管理的(一个NM管理多个Container),所以Container的最大内存和最大虚拟CPU数量,不应该超过NM的内存和虚拟CPU数量;AM是运行在Container中的,所以AM所使用的内存和虚拟CPU数量,不应该超过Container的最大内存和最大虚拟CPU数量。

MapReduce的一些配置(mapred-site.xml)

其它常用配置


参考文档