YARN 资源管理和调度|青训营笔记

98 阅读3分钟

这是我参与「第四届青训营 」笔记创作活动的第5天

1.yarn产生背景:

在大数据时代,为了存储和处理海量数据,出现了丰富的技术组件,比如Hive、Spark、Flink、JStorm等,也有着数量众多类型纷杂的应用程序和服务,比如离线作业、流式作业等,为了避免服务和服务之间、任务和任务之间的相互干扰,传统的做法是为每种类型的作业或者服务搭建一个单独的集群。在这种情况下,由于每种类型作业使用的资源量不同,有些集群的利用率通常不高,而有些则满负荷、资源紧张。为了提高服务器资源利用率、解决资源共享问题,一种方法是把他们合并到一个大集群,但这同时暴露了其它问题,比如一台拥有32G内存的服务器同时部署了HBase和Spark,HBase的RegionServer启动时占用了20G内存,Spark执行某个任务时也需要使用20G内存,但发现没有足够的内存资源使用了。
Yarn就是在这种应用场景下应运而生的,他是一个通用的资源管理系统,对整个集群的资源进行统筹管理,其目标是将短作业和长服务混合部署到一个集群中,并为他们提供统一的资源管理和调度功能。

2.基本架构:

YARN:主要由ResourceManager、NodeManager、ApplicationMaster、和Container组成。
ResourceManager(RM):是一个全局的资源管理器,负责整个系统的资源管理和分配,主要由调度器(Schedule)和应用管理器(Applications Manager)构成。

  • 调度器:主要功能是根据资源容量,队列等方面限制条件,将系统中的资源分配给各个应用程序。
  • 应用程序管理器:负责整个系统中所有应用程序,包括应用程序提交、与调度器协商资源以及启动ApplicationMaster、监控ApplicationMaster运行状态并在失败时重新启动它。 ApplicationMaster(AM) :用户提交的每个应用程序均包含一个独立的AM,其主要功能包括:与RM调度器协商以获得资源(用Container表示)、将得到的资源进一步分配给内部任务、与NM通信以启动/停止任务等、监控所有任务的运行状态。
    NodeManager(NM) :NM是每个节点上的资源管理器,一方面是定时向RM汇报本节点的资源使用情况和各个Container的运行状态,另一方面,他接收并处理来自AM的任务启动或停止等各种请求。
    Container: 是yarn的基本资源分配单位,对应用程序运行环境的抽象,并为应用程序提供资源隔离环境,它封装了如内存、cup、磁盘、网络等。

image.png

3.yarn的工作流程:

当用户向yarn提交一个应用程序后,yarn将分两个阶段运行该程序,第一个阶段是启动ApplicationMaster;第二个阶段是由ApplicationMaster创建应用程序,为他申请资源,并监控它的运行状态。

(1)提交应用程序

(2)启动ApplicationMaster

(3)ApplicationMaster注册

(4)获取资源

(5)请求启动Container

(6)Container监控

(7)注销ApplicationMaster

image.png

个人总结:这节课主要学习了yarn的基本原理,设计思想,整体架构,以及一些调度系统,让我对yarn的整体的工作流程有了一定的了解