云计算 第五章 Hadoop 2.0 主流开源云架构


img

自从云计算的概念被提出,不断地有IT厂商推出自己的云计算平台,但它们都是商业性平台,对于想要继续研究和发展云计算技术的个人和科研团体来说,无法获得更多的了解,Hadoop的出现给研究者带来了希望。

5.1 引例

5.1.1 问题概述

img

5.1.2 常规解决方案

img

img

5.1.3 分布式下的解决方案

img

1.分布式存储

对于第一类存储问题,若能将多台机器硬盘以某种方式连接到一起,则问题迎刃而解。取机器cSlave0,cSlave1和cMaster0,采用客户-服务器模式构建分布式存储集群,让cMaster0管理cSlave0,cSlave1。

img

img

img

img

取新机器cMaster1,采用客户-服务器模式构建由机器cSlave0、cSlave1和cMaster1组成的分布式计算集群。

img

cSlave0最好是处理存于本机硬盘上的file0,而不是将file1从cSlave1调过来(通过网络)再处理file1,这就是所谓的“本地计算”。

img

如何能够实现 “合并” 过程也由多机执行?

“洗牌”Shuffle,规定将Key值相同的KV对,通过网络发往同一台机器。

img

容易看出,无论是Map、Shuffle还是Reduce,甚至是存储结果,在每个阶段都是并行的,整个过程则构成一个有向无环图(DAG)

img

冗余存储与冗余计算

只要保证存于cSlave0上的数据,同时还存在于别的机器上,即使cSlave0宕机,数据依旧不会丢失。

img

5.1.4 小结

img

5.2 Hadoop 2.0简述

5.2.1 Hadoop 2.0由来

img

img

img

5.2.2 Hadoop 2.0相关项目

img

img

5.2.3 Hadoop应用

img

5.3 Hadoop 2.0部署

5.3.1 部署综述

具体参见:Windows&Mac下开发环境配置:jdk、windows本地hadoop安装

img

1.部署步骤

img

2.准备环境

1)硬件环境

由于分布式计算需要用到很多机器,部署时用户须提供多台机器,至于提供几台,须根据 “部署规划”确定。 实际上,完全模式部署Hadoop时,最低需要两台机器(一个主节点,一个从节点),此外,硬件方面,每台机器最低要求有1GB内存,20GB硬盘空间。

2)软件环境img

3.关于Hadoop依赖软件
img

5.3.2 传统解压包部署

img

img

img

img

部署总结:

通过上述单机部署和集群部署,可以看出,Hadoop本身部署起来很简单,其大量工作其实都是前期的Linux环境配置,Hadoop安装只是解压、修改配置文件、格式化、启动和验证,关于Linux命令问题,请参考Linux专业书籍。

5.4 Hadoop 2.0体系架构

5.4.1 Hadoop 2.0公共组件Common

img

img

5.4.2 分布式文件系统HDFS

1.HDFS定位
img

为提高扩展性,HDFS采用了master/slave架构来构建分布式存储集群,这种架构很容易向集群中任意添加或删除slave。

2.HDFS体系架构
img
img
img
3.客户端要访问一个文件
  • 客户端从NameNode获得组成文件的数据块的位置列表
  • 客户端直接从DataNode上读取文件数据
4.其他说明:
  • NameNode使用事务日志(EditLog)记录HDFS元数据的变化,使用映象文件(FsImage)存储文件系统的命名空间

  • 事务日志和映象文件都存储在NameNode的本地文件系统中。

  • 将新的元数据刷新到本地磁盘的新的映象文件中,这样可以截去旧的事务日志,这个过程称为检查点(Checkpoint)

  • HDFS还有Secondary NameNode节点,它辅助NameNode处理映象文件和事务日志。

  • NameNode更新映象文件并清理事务日志,使得事务日志的大小始终控制在可配置的限度下

5.HDFS典型拓扑
img
img
img

从架构上看HDFS存在单点故障,无论是一般拓扑还是商用拓扑,新增的实体几乎都是增强NameNode可靠性的组件,当然这里的ZooKeeper集群还可以用于Hbase。

6.HDFS内部特性

冗余备份

  • HDFS将每个文件存储成一系列数据块(Block),默认块大小为64MB(可配置)。

  • 为了容错,文件的所有数据块都会有副本(副本数量即复制因子,可配置)。

  • HDFS的文件都是一次性写入的,并且严格限制为任何时候都只有一个写用户。

副本存放

  • HDFS集群一般运行在多个机架上,不同机架上机器的通信需要通过交换机。

  • HDFS采用机架感知(Rack-aware)的策略来改进数据的可靠性、可用性和网络带宽的利用率。

  • 机架的错误远比节点的错误少,这个策略可以防止整个机架失效时数据丢失,提高数据的可靠性和可用性,又能保证性能。

img

副本选择

  • HDFS会尽量使用离程序最近的副本来满足用户请求,这样可以减少总带宽消耗和读延时。
  • HDFS的架构支持数据均衡策略。

心跳检测

  • NameNode周期性地从集群中的每个DataNode接受心跳包和块报告,收到心跳包说明该DataNode工作正常

  • NameNode会标记最近没有心跳的DataNode为宕机,不会发给它们任何新的I/O请求。

  • NameNode会不断检测这些需要复制的数据块,并在需要的时候重新复制。

数据完整性检测

  • 多种原因可能造成从DataNode获取的数据块有损坏。

  • HDFS客户端软件实现了对HDFS文件内容的校验和检查(Checksum)。

  • DataNode获得的数据块对应的校验和隐藏文件中的不同,客户端就会判定数据块有损坏,将从其他DataNode获取该数据块的副本。

元数据磁盘失效

  • 映象文件和事务日志是HDFS的核心数据结构。

  • NameNode可以配置为支持维护映象文件和事务日志的多个副本。任何对映象文件或事务日志的修改,都将同步到它们的副本上。

  • 当NameNode重新启动时,总是选择最新的一致的映象文件和事务日志。

简单一致性模型、流式数据访问

  • HDFS的应用程序一般对文件实行一次写、多次读的访问模式。

  • 文件一旦创建、写入和关闭之后就不需要再更改了。

  • 这样就简化了数据一致性问题,高吞吐量的数据访问才成为可能;运行在HDFS上的应用主要以流式读为主,做批量处理;更注重数据访问的高吞吐量。

客户端缓存

  • 客户端创建文件的请求不是立即到达NameNode,HDFS客户端先把数据缓存到本地的一个临时文件,程序的写操作透明地重定向到这个临时文件。

  • 当这个临时文件累积的数据超过一个块的大小(64MB)时,客户端才会联系NameNode。

  • 如果NameNode在文件关闭之前死机,那么文件将会丢失。

  • 如果不采用客户端缓存,网络速度和拥塞都会对输出产生很大的影响。

流水线复制

  • 当客户端准备写数据到HDFS的文件中时,数据一开始会写入本地临时文件。
  • DataNode从前一个节点接收数据的同时,即时把数据传给后面的节点,这就是流水线复制。

架构特征

  • 硬件错误是常态而不是异常。

  • HDFS被设计为运行在普通硬件上,所以硬件故障是很正常的。

  • 错误检测并快速自动恢复是HDFS的最核心设计目标。

超大规模数据集

  • 一般企业级的文件大小可能都在TB级甚至PB级,HDFS支持大文件存储,而且提供整体上高的数据传输带宽。
  • 一个单一的HDFS实例应该能支撑数以千万计的文件,并且能在一个集群里扩展到数百个节点。
7.HDFS对外功能

img

img

5.4.3 分布式操作系统Yarn

1.定位
img
2.体系架构
img
img
img
img

img

3.Yarn具有巨大优势

从Yarn架构和Yarn任务执行过程能看出Yarn具有巨大优势:

img

Yarn的设计大大减轻了ResourceManager的资源消耗,并且ApplicationMaster可分布于集群中任意一台机器,设计上更加优美。

4.Yarn典型拓扑

除了ResourceManager和NodeManager两个实体外,Yarn还包括WebAppProxyServer和JobHistoryServer两个实体。

img

5.编程模板

ApplicationMaster 是一个可变更的部分,只要实现不同的ApplicationMaster,就可以实现不同的编程模式

img

img

一个MapReduce操作分为两个阶段:映射阶段和化简阶段。

img

6.调度策略

ResourceManager的Scheduler模块支持插拔,通过配置文件,用户可以个性化指定其调度策略

img

容量调度算法

img

img

实时配置:管理员能够以安全的方式,在不停止集群的情况下,实时更新队列配置

img

img

img

img

img

5.4.4 Hadoop 2.0安全机制简介

早期Hadoop版本假定HDFS和MapReduce运行在安全的环境中, 它基本上没有安全措施。

img

img

img

img

5.5 Hadoop 2.0访问接口

img

5.5.1 访问接口综述

5.5.2 浏览器接口

img

5.5.3 命令行接口

img

img

img

img

5.6 Hadoop 2.0编程接口

img

5.6.1 HDFS 编程

img

1.HDFS编程实例
img
2.HDFS编程基础
img
img
img

5.6.2 Yarn编程

img

概念和流程

img

img

img

img

2.实例分析
img
3.代码执行方式

默认情况下Yarn包里已经有分布式Shell的代码了,可以使用任何用户执行如下命令:

img

4.实例分析-MapReduce

img

5.Yarn框架处理MR程序时默认类

img

习题:

1.简述Hadoop 1.0与Hadoop 2.0的优缺点,并比较二者区别与联系。

2.简述解压包方式部署Hadoop的弊端。

3.简述Hadoop 2.0安全机制,试分析其优缺点。

4.简述Yarn编程过程,再简述MR编程过程,说明二者有何关系。

5.试从架构上分析Hadoop的优缺点。

【学习笔记合集】

【学习资料】

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是我,Zack

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值