资源描述
大规模Web系统性能优化
调研报告2
院(系)名 称 :
资环学院
专 业 名 称 :
地理信息系统
学 生 姓 名 :
林 晖
学 号 :
201218007010032
二〇一三年四月
简要目录
第一章 Hadoop之我见 4
1.1.Hadoop解决什么问题? 4
1.2.Hadoop怎样解决问题 4
1.2.1.HDFS 4
1.2.2.MapReduce 6
1.3.Hadoop真的这么好吗? 7
1.4.Hadoop解决本学科问题的思考 8
数据拆分 9
Map过程 9
中间数据 9
Reduce过程 9
输出过程 9
1.5.对商业价值的思考 9
第二章 Hadoop相关技术 11
2.1.Hadoop生态系统 11
2.2类似技术 12
参考文献 13
摘 要
本文首先分析Hadoop能够解决什么问题,从问题入手分析Hadoop的核心组件如何协同工作,总结了Hadoop的核心思想。然后从Hadoop的设计特点入手,翻阅有关资料,总结Hadoop卓越成就背后的缺陷。通过对Hadoop的总体了解与调研,将其与本学科的问题进行总结,提出一些解决思路。然后从Hadoop的商业模式应用出发,思考Hadoop的潜在商业应用点。最后一个部分纵向分析架构Hadoop生态系统的各个重要组件及其相互协作模式,同时横向比较与Hadoop类似的技术特点以及与Hadoop的相互关联。
关键字:HDFS、MapReduce、遥感图像处理、PIG、Hive、Hbase
第一章 Hadoop之我见
1.1.Hadoop解决什么问题?
序号
问题描述
传统解决方案
1
数据爆炸性增长,怎样提高存储数据容量
提高服务器硬件配置
2
数据集中式存储,并行读写硬件故障
停止系统运行,维修硬件,重启服务器
3
数据来源于多个存储位置,需要配合处理
花费大量时间整合数据,进行运算
4
数据容量增长,需要扩展数据存储节点
重新编程,重启系统
1.2.Hadoop怎样解决问题
Hadoop的两个核心组件:HDFS和MapReduce,下面使用图表的形式分别说明两者的功能以及技术原理。
1.2.1.HDFS
l HDFS功能与设计思想:
序号
问题构想
HDFS解决方案
1
硬件故障
整个HDFS系统由数百或数千个存储着文件数据片断的服务器组成。每一个组成部分都会频繁地出现故障,HDFS设想一些组成部分总是失效的,HDFS致力于故障的检测和自动快速恢复
2
流式的数据访问
HDFS使应用程序流式地访问它们的数据集。HDFS是设计成适合批量处理的,而不是用户交互式的。所以其重视数据吞吐量,而不是数据访问的反应速度。
3
简单一致性模型
大部分的HDFS程序对文件操作需要的是一次写入,多次读取的。一个文件一旦创建、写入、关闭之后就不需要修改了。这个假定简化了数据一致的问题和高吞吐量的数据访问。
4
移动计算代价比移动数据高
一个应用请求的计算,离它操作的数据越近就越高效,这在数据达到海量级别的时候更是如此。将计算移动到数据附近,比之将数据移动到应用所在显然更好,HDFS提供给应用这样的接口。
5
应用需要在异构平台下移植
HDFS提供对异构平台的支持
l HDFS的技术原理
这部分,我认为网上有两个图已经将HDFS的读写原理说的非常清楚,没有必要花费时间去重复画这样一个图,其实核心就在于如何去理解元数据节点(NameNode)作为管理者以及数据节点DataNode作为工作者如何协同配合.
HDFS读原理:
HDFS写原理:
1.2.2.MapReduce
经过网上的调研,通过对自己编程经验的总结以及将编程上升到社会科学的角度而言来谈的话,MapReduce主要两个流程就是Map和Reduce,从社会科学角度引出MapReduce的核心思想:第一次工业革命以来,蒸汽机的出现为工业界带来了前所未有的变革,工厂制代替了手工工场,用机器代替了手工劳动,典型实例纺织工人制成一件衣服的过程中,首先需要将棉花(代表系统中的数据)这类原始材料放入不同的车间(Map的过程)加工成可适合用于加工服装的棉布,接着就是从不同的车间取不同的布料,制成一件衣服出售(Reduce过程)。
那么这样一个简洁,易用的编程模型,比较核心的技术原理我认为就三块:物理架构如何设计、执行流程是怎样的,单项作业如何进行?通过对资料的整理与收集,网上有许多图片,以下三个我认为对MapReduce的编程模型核心思想剖析的比较到位,其实核心就是要理解分而治之这一重要思想。
MapReduce编程模型物理架构
MapReduce执行过程
单一作业提交过程
(来源于Hadoop官网)
1.3.Hadoop真的这么好吗?
网上看到一篇由DatabaseColumn的几个数据库大牛编写的一篇文章《MapReduce:一个重大的倒退》,总结了MapReduce的不足,从五个大的方面阐述了Hadoop的劣势:
序号
问题描述
详细阐述
1
MapReduce是一个数据库存取的退步
MapReduce不满足下列数据库社区40年来总结的经验,倒退到了60年代的设计思想
l 结构描述是好的。
l 将结构描述从程序中分离是好的
l 高阶的访问语言是好的
2
MapReduce是一个粗燥的实现
l MapReduce没有索引
l MapReduce同时存在很多底层的实现问题,特别是数据交换和数据斜交的情况。
3
MapReduce并不新奇
MapReduce的技术核心思想至少是20年前的
4
MapReduce失去了很多特性
与目前的数据库管理系统相比,MapReduce缺失了以下特性:
l 批量导入
l 索引
l 更新事务
l 完善的约束
l 完善的引用
l 视图
5
MapReduce与现有的数据库管理系统工具不兼容
目前存在许多优秀的数据库管理工具,而MapReduce不能使用这些工具:
l 报表
l 商业智能工具
l 数据挖掘工具
l 复制工具
l 数据库设计工具
1.4.Hadoop解决本学科问题的思考
根据对Hadoop的调研,结合本学科著名的遥感地物识别问题,对Hadoop的使用提出一个自己的一个思考。
首先描述下问题,遥感图像具备多个波段,里面包含了大量的信息,包括通过卫星上的光谱传感器拍摄得到的光谱信息,以及图像本身包含的纹理和形状信息等等,而这些遥感图像数据量巨大,特别是全球的影像数据,例如全球高分辨率的quickbird数据,数据量很轻易就达到TB,在这些影像基础之上,我们可以通过对图像的光谱特性寻找到一些特殊的地物,例如汶川大地震期间,空军的飞机失事,由于汶川为山地形势,崇山峻岭遍布森林,失事飞机坠落之后,人工寻找难度很大,需要使用一些特殊手段寻找失事飞机,首先得到汶川地区的遥感影像数据,在此基础上利用飞机与周围地物的不一致特征寻找失事飞机,结合Hadoop的主要思想,对于这类在海量的数据当中寻找具备某种地物光谱特征的图像时,我认为可以将其分为以下几个比较关键的步骤
数据拆分
将得到的大容量图像按照波段进行切割拆分,将256个波段分开拆分成多个波段组合,进行处理。
Map过程
将拆分之后的数据Map集群中的节点上,同时记录每个map节点所分配的相应的数据块标识,通过此举来保证找到结果之后,能够反向通过key得到波段特征。
中间数据
将Map之后的数据节点内的数据按照地理位置的组合成一个新的中间数据,进入Reduce过程。
Reduce过程
将中间数据重新组合,通过reduce过程得到不同的波段组合的区域组合,计算每个区域是否还有飞机地物特征波段
输出过程
当reduce之后,并通过分析得到的具备飞机地物特征波段,将此结果作为备选方案,通常会有多个方案,再通过这些方案的过滤,去这些地方人工进行搜索,将会大大减少工作效率。
1.5.对商业价值的思考
Hadoop具备许多优良的特性,在许多商业场景中具备很多应用空间,我按照自己的理解我觉得有如下一些应用就很适合Hadoop,当然还有很多,这里只是举个例子:
1. 亚马逊每次当我浏览商品时,即时我没买,下次登录之后就会出现我上次浏览的同类商品的信息和销售情况,这类信息应该也用到了Hadoop。
2.很多公司报表用到的年度报告或者年度环比数据报告的时候也会用到hadoop去计算. 例如房地产的数据。
3.搜索引擎分析的时候应该也会用到。
4银行的信用卡业务,当你正在刷卡完一笔消费的那一瞬间,假如在你当天消费基础上再消费满某个额度,你就可以免费获得某种令你非常满意的利益等等,你可能就会心动再去消费,这样就可能提高银行信用卡业务,那么这个消费额度是如何从海量的业务数据中以秒级的速度计算出该客户的消费记录,并及时反馈这个营销 信息到客户手中呢?这时候关系型数据库计算出这个额度或许就需要几分钟甚至更多时间,就需要hadoop了,这就是所谓的“秒级营销”.
第二章 Hadoop相关技术
2.1.Hadoop生态系统
第一章 介绍的主要是Hadoop的核心部分即MapReduce以及HDFS的主要功能以及实现方法,Hadoop还包括许多组件,下列表格中的一些相关技术就是在Hadoop得到广泛使用的一些技术特点以及与Hadoop之间的相互关系。
序号
技术名称
主要功能与技术特点
与Hadoop的关系
1
Pig
提供SQL-LIKE语言Pig Latin,该语言的编译器会把类SQL的数据分析请求转换为一系列经过优化处理的MapReduce运算。Pig为复杂的海量数据并行计算提供了一个简单的操作和编程接口
l 提供更丰富的数据结构
l 提供更强大的数据分析
2
HIVE
基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。
帮助Hadoop使用类SQL语句快速实现简单的MapReduce统计
3
Hbase
适合于非结构化数据存储的数据库就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。
HBase同样利用Hadoop MapReduce来处理HBase中的海量数据;
4
ZooKeeper
配置维护、名字服务、分布式同步、组服务等。它的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
负责协调工作流程
5
Sqoop
用来将Hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。
数据切换工具
6
AVRO
Avro是一个数据序列化的系统,它可以提供:
1 丰富的数据结构类型
2 快速可压缩的二进制数据形式
3 存储持久数据的文件容器
4 远程过程调用RPC
5 简单的动态语言结合功能,Avro和动态语言结合后,读写数据文件和使用RPC协议都不需要生成代码,而代码生成作为一种可选的优化只值得在静态类型语言中实现。
序列化支持
各个技术之间构成的Hadoop生态系统可以简要的以下述图形表示
2.2类似技术
序号
技术名称
主要功能
Hadoop类似技术关联
1
Google FIle System(GFS)
一个分布式的文件系统, 从GFS之上看起来, 隐藏了集群内部各个节点之间的复杂物理联络关系, 形成一个虚拟的统一海量文件系统. 利用MapReduce的计算模型, 进行数据计算.
HDFS是GFS的类开源实现
2
Big Table
稀疏的、分布式的、持久化存储的多维度排序Map。
特点:
1、适合大规模海量数据,PB级数据;
2、分布式、并发数据处理,效率极高;
3、易于扩展,支持动态伸缩;
4、适用于廉价设备;
5、适合于读操作,不适合写操作。
6、不适用于传统关系数据库;
HBase是Big Table的开源实现
3
lustre
一个大规模的、安全可靠的,具备高可用性的集群文件系统,它是由SUN公司开发和维护。该项目主要的目的就是开发下一代的集群文件系统
参考文献
1. Tom White, "Hadoop权威指南", 清华大学出版社, August 31, 2011
2. 维基百科.Apache Hadoop. http://en.wikipedia.org/wiki/Hadoop.2012.05
3. 私塾网.深入浅出学Hadoop
2013.02
4. 维基百科.Avro. http://en.wikipedia.org/wiki/Avro.2012.05
5. Apache Pig. Welcome to Apache Pig, http://pig.apache.org/,2013.02
6. Apache Hbase. Welcome to Apache HBase.http://HBase.apache.org/2011.05
7. Apache Hive,Welcome to Hive,http://Hive.apache.org/2012.04
8. Apache Zookeeper. http://zookeeper.apache.org/ 2012.07
9. Apache Sqoop,http://sqoop.apache.org/.2013.03
10. 杨杨ye,HBase与BigTable的比较,
11. Google Research Publications,The Google File System
12. alex dbthink, Bigtable探秘 Google分布式数据存储系统,
2010.07
13. 百度文库,Lustre文件系统深入分析, 2011.09
展开阅读全文