一、YARN产生和发展简史
1.1背景
- 数据、程序、运算资源(内存、CPU)三者组在一起,才能完成数据的计算处理过程。在单机环境下,三者之间协调配合不是太大问题。
- 为了应对海量数据的处理场景,Hadoop软件出现并提供了分布式处理思想。分布式环境下的三者如何协调好将成为关键。
- 通过对Hadoop版本演进的简单回顾,可以让我们知道YARN的产生和发展简史,洞悉YARN发展进程。
- 很多Hadoop的早期用户使用Hadoop的方式与在众多主机上运行桌面应用程序类似。
- 在少量几个节点上手工建立一个集群;
- 将数据载入Hadoop分布式文件系统(HDFS);
- 通过运行MapReduce任务来运算并获得结果;
- 然后拆掉集群。
- 这种方式的一部分原因是没有在Hadoop HDFS上持久存储数据的迫切需求,另一部分原因是没有共享数据和计算结果的动机。
1.2 Hadoop演进阶段
1.2.1 阶段0:Ad Hoc集群
- Ad Hoc应当理解为专用的、特定的意思(数仓领域中常理解为即席)。Ad Hoc集群时代标志着Hadoop集群的起源,集群以Ad Hoc、单用户方式建立。
- 后来,随着私人集群的使用和Hadoop容错性的提高,持久的HDFS集群出现,并且实现了HDFS集群的共享,把常用和感兴趣的数据集载入HDFS共享集群中。当共享HDFS成为现实,还没实现共享的计算平台就成为关切对象。
- 不同于HDFS,为多个组织的多个用户简单设置一个共享MapReduce集群并非易事。尤其是集群下的物理资源的共享很不理想。
1.2.2 阶段1:HOD集群
- 为了解决集群条件下的多租户问题, Yahoo发展并且部署了称为“Hadoop on Demand”的平台。
- Hadoop On Demand (HOD)是一个能在大规模物理集群上供应虚拟Hadoop集群的系统。
- 在已经分配的节点上, HOD会启动MapReduce和HDFS守护进程来响应用户数据和应用的请求。
- 主要特点: 用户可以使用HOD来同时分配多个MapReduce集群。
- 缺点包括: 无法支持数据本地化、资源回收效率低、无动态扩容缩容能力,多租户共享延迟高等。
1.2.3 阶段2:共享计算集群
- 共享MapReduce计算集群就是Hadoop 1.x版本里的主要架构模型。
- 主要组件
- JobTracker:一个中央守护进程,负责运行集群上的所有作业。
- TaskTracker:系统里的从进程,根据JobTracker的指令来执行任务。
- 主要弊端: JobTracker身兼多职、压力大(作业数据管理、作业状态记录、作业调度)、可靠性和可用性欠缺(JobTracker单点故障)、计算模型单一(不能万物皆MapReduce)。
- 且MapReduce框架本身需要迭代优化。但是计算和资源管理绑定在了一起,使得MapReduce的演变比较困难。
1.2.4 阶段3:YARN集群
- 针对共享计算集群,JobTracker需要彻底地重写,才能解决扩展性的主要问题。但是,这种重写即使成功了,也不一定能解决平台和用户代码的耦合问题,也不能解决用户对非MapReduce编程模型的需求。如果不做重大的重新设计,集群可用性会继续被捆绑到整个系统的稳定性上。
- 拆分MapReduce,剥离出资源管理成为单独框架,YARN闪亮登场,MapReduce专注于数据处理,两者解耦合。
- YARN被设计用以解决以往架构的需求和缺陷的资源管理和调度软件。
对YARN的需求 :
- 可扩展性:可以平滑的扩展至数万节点和并发的应用。
- 可维护性:保证集群软件的升级与用户应用程序完全解耦。
- 多租户:需要支持在同一集群中多个租户并存,同时支持多个租户间细颗粒度地共享单个节点。
- 位置感知:将计算移至数据所在位置。
- 高集群使用率:实现底层物理资源的高使用率。
- 安全和可审计的操作:继续以安全的、可审计的方式使用集群资源。
- 可靠性和可用性:具有高度可靠的用户交互、并支持高可用性
- 对编程模型多样化的支持:支持多样化的编程模型,需要演进为不仅仅以MapReduce为中心。
- 灵活的资源模型:支持各个节点的动态资源配置以及灵活的资源模型。
- 向后兼容:保持现有的MapReduce应用程序的向后兼容性。
二、YARN简介
2.1简介
Apache Hadoop YARN (Yet Another Resource Negotiator,另一种资源协调者)是一种新的Hadoop资源管理器。 YARN是一个通用资源管理系统和调度平台,可为上层应用提供统一的资源管理和调度。 它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。
如何理解通用资源管理系统和调度平台?
- 资源管理系统:集群的硬件资源,和程序运行相关,比如内存、CPU等。
- 调度平台:多个程序同时申请计算资源如何分配,调度的规则(算法)。
- 通用:不仅仅支持MapReduce程序,理论上支持各种计算程序。YARN不关心你干什么,只关心你要资源,在有的情况下给你,用完之后还我。
- 可以把Hadoop YARN理解为相当于一个分布式的操作系统平台,而MapReduce等计算程序则相当于运行于操作系统之上的应用程序,YARN为这些程序提供运算所需的资源(内存、CPU等)。
- Hadoop能有今天这个地位,YARN可以说是功不可没。因为有了YARN ,更多计算框架可以接入到 HDFS中,而不单单是 MapReduce,正式因为YARN的包容,使得其他计算框架能专注于计算性能的提升。
- HDFS可能不是最优秀的大数据存储系统,但却是应用最广泛的大数据存储系统, YARN功不可没。
三、YARN与MRv1区别
3.1 概述
- Hadoop从1到2的过程中,最大的变化就是拆分MapReduce,剥离出新的单独组件:YARN。Hadoop3系列架构整体和2系列一致。
- 在Hadoop1中,MapReduce(MRv1)负责:数据计算、资源管理,身兼多职。
- 在Hadoop2中,MapReduce(MRv2)负责数据计算,YARN负责资源管理。
由于 MRv1(第一代MapReduce)在扩展性、可靠性、资源利用率和多框架等方面存在明显不足, Apache 开始尝试对 MapReduce 进行升级改造,于是诞生了更加先进的下一代 MapReduce 计算框架 MRv2。
并且在MRv2中,将资源管理任务调度模块单独抽离出来,构建成了一个独立的通用资源管理系统 YARN,而MRv2则专注于数据的计算处理了。
3.2 MRv1介绍
- MRv1包括三个部分 :运行时环境(JobTracker和TaskTracker)、编程模型(MapReduce)、数据处理引擎(Map Task和Reduce Task).
- JobTracker 负责资源和任务的管理与调度, TaskTracker 负责单个节点的资源管理和任务执行。
- MRv1将资源管理和应用程序管理两部分混杂在一起,使得它在扩展性、容错性和多框架支持等方面存在明显缺陷。
3.3 YARN介绍
- MRv2 重用了MRv1中的编程模型和数据处理引擎。但运行时环境(resourcemanager、nodemanager)被完全重写,由YARN来专管资源管理和任务调度。
- 并且YARN将程序内部具体管理职责交给一个叫做ApplicationMaster的角色。自己专心于集群资源管理,成为一个通用的资源管理系统。