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抽象文件系统FileSystemb.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应用程序的向后兼容
相关文章推荐
- Android 快速开发系列 ORMLite 框架最佳实践
- 5. Longest Palindromic Substring
- 来谈谈C++ 位运算 & | << >> ^ ~ %
- Unity2D Sprite Editor 图片切割
- Java的常用类与接口
- 分布式与集群的联系与区别
- 冒泡排序
- QThread多线程编程经典案例分析
- Redis实践----安装部署篇
- Java之BufferedImage简谈
- [leetcode]222. Count Complete Tree Nodes
- Resources are low on NN. Please add or free up more resources then turn off safe mode manually.
- AsyncTask线程池使用
- lineCap属性
- 保护模式学习笔记:GDT
- python 中中文编码
- js 图片上传并预览
- tc添加视图Custom View
- Apache脚本路径别名(CGI接口)
- Apache配置日志功能