内容简介
一、YARN的基本概述
- Apache Hadoop YARN (Yet Another Resource Negotiator,另一种资源协调者)是Hadoop三大核心组件之一,承担着Hadoop集群的资源管理重任,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。
- YARN在Hadoop2.x后被引入,一开始只是为了改善Hadoop1.x中MapReduce程序的调用实现,但是它具备足够的通用性,同样可以支持其他的分布式计算模型,换言之,其他的分布式运算框架可以运行在YARN之上,接收YARN的调度,而YARN向那些计算框架提供高级API来调用而隐藏了资源管理的细节,比如常用的Spark就可以运行在YARN上,这就是Spark On YARN的Saprk运行模式。通过YARN作为桥梁Hadoop可以与其他大数据框架进行交互:
二、YARN的核心进程
1.ResourceManager
- ResourceManager是YARN的Master,整个集群有且只有一个工作的ResourceManager,负责整个系统的资源管理和分配,包括处理客户端请求、启动/监控 ApplicationMaster、监控 NodeManager、资源的分配与调度。它主要由两个组件构成:调度器和应用程序管理器。
(1). 调度器(Scheduler),负责根据已有的系统资源,比如内存、磁盘空间、CPU核数等等和提交的资源申请请求,将资源以YARN中的一个抽象Container,分配给各个正在运行的应用程序,值得注意的是,调度器仅仅负责资源的分配,不负责任何与具体应用程序相关的工作,比如不负责监控或者跟踪应用的执行状态等。
(2).应用程序管理器(Applications Manager,ASM),应用程序管理器负责接收各种分布式运算job的请求,并为其分配一个Container来启动对应的ApplicationMaster,监控 ApplicationMaster 运行状态并在失败时重新启动它等等。
2.NodeManager
- NodeManager管理YARN集群中的每个节点。NodeManager提供针对集群中每个节点的服务,从监督对一个容器的终生管理到监视资源和跟踪节点健康。主要实现以下功能:
(1).管理当前节点的资源。