您的位置:首页 > 其它

YARN的发展背景及基本原理

2016-07-01 16:24 260 查看

Yarn产生的历史背景

Hadoop是apache基金会的一个项目, 目的是开发一个开源软件,用于可靠的可扩展的,分布式的计算。

Hadoop不是一个软件,而是一个软件库,hadoop作为一个软件库,提供了一个框架,可以以分布式的方式,在集群的多台主机之间,使用简单的编程模型来处理大量的数据集。Hadoop被设计成可以从单主机扩展到数千台主机,并且支持本地计算和存储。

Hadoop本身被设计成可以在应用层面检测和处理底层的硬件故障,以实现高可用性,而不是由底层硬件来完成故障的检查。

1.Hadoop中的主要项目:

a.Hadoop Common(从0.20开始讲Core项目改名为Common项目)

为Hadoop的其他项目提供一些常用的工具,包括系统配置工具Configuration、远程过程调用RPC、序列化机制和Hadoop抽象文件系统FileSystem

b.Hadoop Distributed File System (HDFS)

Hadoop体系中数据存储管理的基础,实现了对应用成语大吞吐量的访问。

c.Hadoop YARN

作业调度和集群资源管理的一个框架

d.Hadoop MapReduce

基于YARN的一个系统,用于并行处理大量的数据集。

##2.Hadoop演进 的四大阶段

阶段0:Ad Hoc集群时代

A. Ad hoc集群出现之前,用户使用Hadoop与普通的桌面应用方式类似

a) 几个节点上创建集群
b) 载入数据至HDFS,运行MapReduce任务,得到结果
c) 拆掉集群


B. 原因:

a) 没有在HDFS持久存储数据的需求
b) 没有共享数据和计算结果的动机


C.Yahoo实现了共享的HDFS实例,迫切要求实现共享的计算平台

阶段1:Hadoop on Demand

A. HOD是一个能在商用硬件的共享集群上提供和管理Hadoop MapReduce和HDFS实例的系统

B. 使用Torque资源管理器和集群调度器(Maui)分配集群

C. 并且在分配的节点上启动MapReduce和HDFS的守护进程相应用户数据和应用请求

D. 典型的HOD会话:分配一个集群、在其上运行Hadoop作业,释放集群

E. HOD的特点及优势

a) HOD为每一个作业建立一个新的集群,当开发人员测试新特性时,用户可以使用稳定的Hadoop版本。
b) Hadoop社区每3个月发布一个修订版,为保证软件的正常升级,要求HOD具有相当的灵活性


F. HOD的限制:任何时刻集群的每一个节点只属于一个用户的Hadoop集群

G. HOD的缺点:

a) 第一个缺点
i. 资源管理器Torque不知道HDFS块的分布,分配集群节点是无法考虑到本地化
ii. 所以Hadoop中的某些作业,由于Torque得不到足够的信息,大多数读操作会从远程主机处获取
iii. 虽然做了一些改进,但是收获不大,最终Yahoo停用了HOD
b) 第二个缺点:
i. HOD单个作业或者作业之间的阶段集群的规模不能调整,所以集群在容量的主要部分在大多数时间是空闲的,等待后续轻量阶段的完成
ii. 极端但是常见的例子:运行在一个节点上的Reduce任务可能会导致数百节点组成的集群无法回收而处于空闲状态


阶段2:共享计算集群的黎明

A. 共享计算集群MapReduce

a) 特性:
i. 中央Jobtracker守护进程
ii. JobTracker内存管理
iii. 已完成作业的管理
iv. 中央调度器:Capacity(容量)调度器和Fair(公平)调度器
v. 数据的回复和升级
vi. 单个节点的隔离
vii. 身份认证和访问控制


B. 共享计算集群MapReduce和与之协同工作的共享HDFS实例是Hadoop1.x版本的主要架构

C. 共享计算架构包括两大核心组件:

a) JobTracker:一个中央守护进程,负责管理集群上的所有作业,索然和HOD中为单用户作业的进程一样,到时多了一些额外的功能
b) TaskTracker:系统的从进程,根据JobTracker的指令来执行任务,和HOD中的守护进程也是一样的,不同的是TaskTracker负责运行来自所有用户的作业。


D. MapReduce的问题

a) 问题一
i. 可扩展性瓶颈
ii. 可靠性和可用性
iii. MapReduce编程模型的滥用
b) 问题二
i. 资源模型,map槽和Reduce槽是固定的,但是两种任务未必能以相同的速率完成


阶段3:YARN的出现

A. 以前遇到的问题迫切要求新模型的诞生
B. 新的架构和相关实现尽量重用现有框架的代码、相似的操作模式,并未现有的MapReduce用户提供相同的接口


四大阶段都必须满足的要求

要求1:可扩展性,可以平滑地扩展至数万节点和并发的应用
要求2:可维护性,保证集群软件的升级与用户应用程序完全解耦
要求3:多租户,需要支持在同一个集群中多个租户并存,同时支持多个租户之间细粒度地共享单个节点
要求4:位置感知,将计算移动到数据所在位置
要求5:高集群使用率,实现底层物理资源的高使用率
要求6:安全和可审计的操作,继续以安全的、可审计的方式使用集群资源
要求7:可靠性和可用性,举要高度可靠的用户交互,病支持高可用性
要求8:对编程模型多样性的支持,支持多样化的编程模型,并需要演进为不仅仅以MapReduce为中心
需求9:灵活的资源模型,支持各个节点的动态资源配置以及灵活的资源模型
需求10:向后兼容,保持现有MapReduce应用程序的向后兼容
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: