1.架构图
ResourceManager
ResourceManager负责集群中所有资源的统一管理和分配,它接收来自各个节点
(NodeManager)的资源汇报信息,并把这些信息按照一定的策略分配给各个应用程序。
ResourceManager是整个YARN集群中最重要的组件之一,它的设计直接决定了系统
的可扩展性、可用性和容错性等特点,它的功能较多,包括ApplicationMaster管理(启动、
停止等)、NodeManager管理、Application管理、状态机管理等。
2. YARN 系统架构
概括起来,ResourceManage:主要完成以下几个功能:
与客户端交互,处理来自客户端的请求;
启动和管理ApplicationMaster,并在它运行失败时重新启动它;
管理NodeManager,接收来自NodeManager的资源汇报信息,下达管理指令(比如杀
死Container等);
资源管理与调度,接收来自ApplicationMaster的资源申请请求并向NodeManager并为
之分配资源。
2. YARN 系统架构
NodeManager
NodeManager是运行在单个节点上的代理,管理Hadoop集群中单个计算节点,它需要与应
用程序的ApplicationMaster和集群管理者ResourceManager交互。
从ApplicationMaster上接收有关Container的命令并执行(比如启动、停止Container )。
向ResourceManager汇报各个Container运行状态和节点健康状况,并领取有关
Container的命令(比如清理Container)并执行。
2. YARN 系统架构
ApplicationMaster
ApplicationMaster 它是与应用程序相关的组件。
负责数据的切分,把每份数据分配给对应的Map Task。
为应用程序申请资源并进一步分配给内部的任务。比如从ResourceManager获取分配
的资源,然后分配给Task任务。
任务的监控与容错。一旦一个任务挂掉之后,它可以重新向ResourceManager申请资
源,
2. YARN 系统架构
Container
Container是YARN中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁
盘、网络等,当AM向RM申请资源时,RM为AM返回的资源便是用Container表示的。
YARN会为每个任务分配一个Container,且该任务只能使用该Container中描述的资源。需
要注意的是,Container不同于MRv1中的slot,它是一个动态资源划分单位,是根据应用程
序的需求动态生成的。