批处理计算框架MapReduce、内存计算框架Spark、流式计算框架Storm、批流计算框架Flink等都需要在运行过程中管理和调度计算机的CPU、内存资源,有些场景需要选择多种计算框架,那么,计算资源管理、调度和共享就成为难题。
通用资源管理系统Yarn就是一种Hadoop资源管理器,为上层的计算框架提供统一的资源管理和调度,通过提升集群中计算资源的利用率,实现资源的统一管理和数据共享。
通用统一资源管理系统,可以同时运行长应用程序和短应用程序。
长应用程序,是指永不停止运行的程序,如Spark Thrift Server等。
短应用程序,是短时间内运行结束的程序,如MR job、Spark job等。
发展
Hadoop 1.x主要分为:Hdfs与MapReduce。其中MR用于集群资源管理和数据处理。
Hadoop 2.x主要分为:Hdfs、Yarn、计算框架。其中,Yarn用于集群资源管理。
主要服务
Resource Manager
Yarn的资源管理器,负责整个系统的资源管理和分配,一个集群中通常只有一个RM。
在RM中的核心组件包括:
调度器(Scheduler):根据应用程序的资源需求进行资源分配,分配单位是Container
应用程序管理器(Application Manager,ASM):负责管理整个系统中所有应用程序,包括应用程序提交、Application Master的启动与监控等
Container是任务运行的资源(节点、内存、CPU),任务启动命令,及运行环境
Node Manager
Node Manager是单节点的资源管理器,负责单个节点的资源和任务的管理,在集群中通常有多个。
NM会定时向RM汇报本节点上的资源使用情况和各个Container的运行状态(CPU和内存等资源)
Application Master
Application Master管理YARN内运行的应用程序。
AM的主要功能是数据切分、为应用程序申请资源,并进一步分配给内部任务、任务监控与容错。
Timeline Server
Timeline Server是一种通用的解决application的当前及历史信息的存储和检索的方案,通常一个集群只有一个TS。
TS会持久化应用程序的具体信息,持久化已完成应用的信息。
开发运维
Resource Manager
队列默认是以内存计算调配。
父队列可以管理资源分配,但是在通过YARN提交任务时,只能提交到最底层的子队列。
在队列上打标签,完成节点分组。
Resource Manager基于Zookeeper实现HA,一般是两台机器,其中一个处于Active,另一个处于Standby
yarn.resourcemanager.ha.enabled=true/false
API
Resource Manager REST API允许用户获取集群信息,包括:
集群状态
集群监控度量信息
应用程序调度信息
集群中的所有节点信息
集群中的所有应用程序信息
Node Manager