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

文章目录

    • 5.1 引例
      • 5.1.1 问题概述
      • 5.1.2 常规解决方案
      • 5.1.3 分布式下的解决方案
        • 1.分布式存储
        • 冗余存储与冗余计算
      • 5.1.4 小结
      • img
    • 5.2 Hadoop 2.0简述
      • 5.2.1 Hadoop 2.0由来
      • 5.2.2 Hadoop 2.0相关项目
      • 5.2.3 Hadoop应用
      • img
    • 5.3 Hadoop 2.0部署
      • 5.3.1 部署综述
        • 1.部署步骤
        • 2.准备环境
        • 3.关于Hadoop依赖软件
        • img
      • 5.3.2 传统解压包部署
      • img
      • img
      • img
      • img
        • 部署总结:
    • 5.4 Hadoop 2.0体系架构
      • 5.4.1 Hadoop 2.0公共组件Common
      • 5.4.2 分布式文件系统HDFS
        • 1.HDFS定位
        • img
        • 2.HDFS体系架构
        • img
        • img
        • img
        • 3.客户端要访问一个文件
        • 4.其他说明:
        • 5.HDFS典型拓扑
        • img
        • img
        • img
        • 6.HDFS内部特性
        • 7.HDFS对外功能
      • 5.4.3 分布式操作系统Yarn
        • 1.定位
        • img
        • 2.体系架构
        • img
        • img
        • img
        • img
        • 3.Yarn具有巨大优势
        • 4.Yarn典型拓扑
        • 5.编程模板
        • 6.调度策略
      • 5.4.4 Hadoop 2.0安全机制简介
    • 5.5 Hadoop 2.0访问接口
      • 5.5.1 访问接口综述
      • 5.5.2 浏览器接口
      • 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编程
        • 概念和流程
        • 2.实例分析
        • img
        • 3.代码执行方式
        • 4.实例分析-MapReduce
        • 5.Yarn框架处理MR程序时默认类
    • 习题:
    • 【学习笔记合集】
    • 【学习资料】

云计算 第五章 Hadoop 2.0 主流开源云架构_第1张图片

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

5.1 引例

5.1.1 问题概述

云计算 第五章 Hadoop 2.0 主流开源云架构_第2张图片

5.1.2 常规解决方案

云计算 第五章 Hadoop 2.0 主流开源云架构_第3张图片

云计算 第五章 Hadoop 2.0 主流开源云架构_第4张图片

5.1.3 分布式下的解决方案

云计算 第五章 Hadoop 2.0 主流开源云架构_第5张图片

1.分布式存储

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

云计算 第五章 Hadoop 2.0 主流开源云架构_第6张图片

云计算 第五章 Hadoop 2.0 主流开源云架构_第7张图片

云计算 第五章 Hadoop 2.0 主流开源云架构_第8张图片

云计算 第五章 Hadoop 2.0 主流开源云架构_第9张图片

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

云计算 第五章 Hadoop 2.0 主流开源云架构_第10张图片

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

云计算 第五章 Hadoop 2.0 主流开源云架构_第11张图片

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

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

云计算 第五章 Hadoop 2.0 主流开源云架构_第12张图片

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

云计算 第五章 Hadoop 2.0 主流开源云架构_第13张图片

冗余存储与冗余计算

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

云计算 第五章 Hadoop 2.0 主流开源云架构_第14张图片

5.1.4 小结

云计算 第五章 Hadoop 2.0 主流开源云架构_第15张图片

5.2 Hadoop 2.0简述

5.2.1 Hadoop 2.0由来

云计算 第五章 Hadoop 2.0 主流开源云架构_第16张图片

云计算 第五章 Hadoop 2.0 主流开源云架构_第17张图片

云计算 第五章 Hadoop 2.0 主流开源云架构_第18张图片

5.2.2 Hadoop 2.0相关项目

云计算 第五章 Hadoop 2.0 主流开源云架构_第19张图片

云计算 第五章 Hadoop 2.0 主流开源云架构_第20张图片

5.2.3 Hadoop应用

云计算 第五章 Hadoop 2.0 主流开源云架构_第21张图片

5.3 Hadoop 2.0部署

5.3.1 部署综述

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

云计算 第五章 Hadoop 2.0 主流开源云架构_第22张图片

1.部署步骤

云计算 第五章 Hadoop 2.0 主流开源云架构_第23张图片

2.准备环境

1)硬件环境

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

2)软件环境云计算 第五章 Hadoop 2.0 主流开源云架构_第24张图片

3.关于Hadoop依赖软件
云计算 第五章 Hadoop 2.0 主流开源云架构_第25张图片

5.3.2 传统解压包部署

云计算 第五章 Hadoop 2.0 主流开源云架构_第26张图片

云计算 第五章 Hadoop 2.0 主流开源云架构_第27张图片

云计算 第五章 Hadoop 2.0 主流开源云架构_第28张图片

云计算 第五章 Hadoop 2.0 主流开源云架构_第29张图片

部署总结:

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

5.4 Hadoop 2.0体系架构

5.4.1 Hadoop 2.0公共组件Common

云计算 第五章 Hadoop 2.0 主流开源云架构_第30张图片

云计算 第五章 Hadoop 2.0 主流开源云架构_第31张图片

5.4.2 分布式文件系统HDFS

1.HDFS定位
云计算 第五章 Hadoop 2.0 主流开源云架构_第32张图片

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

2.HDFS体系架构
云计算 第五章 Hadoop 2.0 主流开源云架构_第33张图片
云计算 第五章 Hadoop 2.0 主流开源云架构_第34张图片
云计算 第五章 Hadoop 2.0 主流开源云架构_第35张图片
3.客户端要访问一个文件
  • 客户端从NameNode获得组成文件的数据块的位置列表
  • 客户端直接从DataNode上读取文件数据
4.其他说明:
  • NameNode使用事务日志(EditLog)记录HDFS元数据的变化,使用映象文件(FsImage)存储文件系统的命名空间

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

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

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

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

5.HDFS典型拓扑
云计算 第五章 Hadoop 2.0 主流开源云架构_第36张图片
云计算 第五章 Hadoop 2.0 主流开源云架构_第37张图片
云计算 第五章 Hadoop 2.0 主流开源云架构_第38张图片

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

6.HDFS内部特性

冗余备份

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

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

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

副本存放

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

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

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

云计算 第五章 Hadoop 2.0 主流开源云架构_第39张图片

副本选择

  • 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对外功能

云计算 第五章 Hadoop 2.0 主流开源云架构_第40张图片

云计算 第五章 Hadoop 2.0 主流开源云架构_第41张图片

5.4.3 分布式操作系统Yarn

1.定位
云计算 第五章 Hadoop 2.0 主流开源云架构_第42张图片
2.体系架构
云计算 第五章 Hadoop 2.0 主流开源云架构_第43张图片
云计算 第五章 Hadoop 2.0 主流开源云架构_第44张图片
云计算 第五章 Hadoop 2.0 主流开源云架构_第45张图片
云计算 第五章 Hadoop 2.0 主流开源云架构_第46张图片

云计算 第五章 Hadoop 2.0 主流开源云架构_第47张图片

3.Yarn具有巨大优势

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

云计算 第五章 Hadoop 2.0 主流开源云架构_第48张图片

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

4.Yarn典型拓扑

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

云计算 第五章 Hadoop 2.0 主流开源云架构_第49张图片

5.编程模板

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

云计算 第五章 Hadoop 2.0 主流开源云架构_第50张图片

云计算 第五章 Hadoop 2.0 主流开源云架构_第51张图片

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

云计算 第五章 Hadoop 2.0 主流开源云架构_第52张图片

6.调度策略

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

云计算 第五章 Hadoop 2.0 主流开源云架构_第53张图片

容量调度算法

云计算 第五章 Hadoop 2.0 主流开源云架构_第54张图片

云计算 第五章 Hadoop 2.0 主流开源云架构_第55张图片

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

云计算 第五章 Hadoop 2.0 主流开源云架构_第56张图片

云计算 第五章 Hadoop 2.0 主流开源云架构_第57张图片

云计算 第五章 Hadoop 2.0 主流开源云架构_第58张图片

云计算 第五章 Hadoop 2.0 主流开源云架构_第59张图片

云计算 第五章 Hadoop 2.0 主流开源云架构_第60张图片

5.4.4 Hadoop 2.0安全机制简介

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

云计算 第五章 Hadoop 2.0 主流开源云架构_第61张图片

云计算 第五章 Hadoop 2.0 主流开源云架构_第62张图片

云计算 第五章 Hadoop 2.0 主流开源云架构_第63张图片

云计算 第五章 Hadoop 2.0 主流开源云架构_第64张图片

5.5 Hadoop 2.0访问接口

云计算 第五章 Hadoop 2.0 主流开源云架构_第65张图片

5.5.1 访问接口综述

5.5.2 浏览器接口

云计算 第五章 Hadoop 2.0 主流开源云架构_第66张图片

5.5.3 命令行接口

云计算 第五章 Hadoop 2.0 主流开源云架构_第67张图片

云计算 第五章 Hadoop 2.0 主流开源云架构_第68张图片

云计算 第五章 Hadoop 2.0 主流开源云架构_第69张图片

云计算 第五章 Hadoop 2.0 主流开源云架构_第70张图片

5.6 Hadoop 2.0编程接口

云计算 第五章 Hadoop 2.0 主流开源云架构_第71张图片

5.6.1 HDFS 编程

云计算 第五章 Hadoop 2.0 主流开源云架构_第72张图片

1.HDFS编程实例
云计算 第五章 Hadoop 2.0 主流开源云架构_第73张图片
2.HDFS编程基础
云计算 第五章 Hadoop 2.0 主流开源云架构_第74张图片
云计算 第五章 Hadoop 2.0 主流开源云架构_第75张图片
云计算 第五章 Hadoop 2.0 主流开源云架构_第76张图片

5.6.2 Yarn编程

云计算 第五章 Hadoop 2.0 主流开源云架构_第77张图片

概念和流程

云计算 第五章 Hadoop 2.0 主流开源云架构_第78张图片

云计算 第五章 Hadoop 2.0 主流开源云架构_第79张图片

云计算 第五章 Hadoop 2.0 主流开源云架构_第80张图片

云计算 第五章 Hadoop 2.0 主流开源云架构_第81张图片

2.实例分析
云计算 第五章 Hadoop 2.0 主流开源云架构_第82张图片
3.代码执行方式

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

云计算 第五章 Hadoop 2.0 主流开源云架构_第83张图片

4.实例分析-MapReduce

云计算 第五章 Hadoop 2.0 主流开源云架构_第84张图片

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

云计算 第五章 Hadoop 2.0 主流开源云架构_第85张图片

习题:

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

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

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

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

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

【学习笔记合集】

  • 云计算 第一章 大数据与云计算
  • 云计算 第二章 Google云计算原理机应用
  • 云计算 第三章 Amazon云计算AWS
  • 云计算 第四章 微软云计算 Windows Azure

【学习资料】

  • 教材:《云计算(第三版)刘鹏》
  • PPT下载

你可能感兴趣的:(#,Hadoop,#,云计算,hadoop,分布式,大数据,hdfs,yarn)