在Hadoop基础上的数据处理系统的构建研究
第 1 章 绪论
1.1 研究背景和意义
随着科技的进步以及互联网技术的不断提高,越来越多的智能设备被人们所使用。而如今物联网、云计算等新兴技术也开始逐步影响着人们的生活,随之而来的就是这些数据载体所导致的数据量增长的问题,比如 Faceboo 每天所要处理的数据量就在 500TB 左右,如何处理这些海量数据成为了每个公司发展的瓶颈。据统计,截至到 2021 年全球的数据量将达到 8.5ZB,而且将以每 18 个月翻一番的趋势增长,其中以电子商务交易数据、社交网络数据和移动终端数据为代表的三大主导非结构化数据将占全球数据总量的 90%[1]。无疑,大数据的时代已经到来。
本文要处理的数据是温度传感器采集的数据,因此在短时间内就会产生大量的数据,而且这些数据是不断增长的,如果采用传统的数据存储模式即使用处理能力很强的大型机和关系型数据库,即将全部数据存储到具有很大容量的磁盘上。虽然近年来磁盘的存储容量不断增加,但是其访问速度却未能与时俱进,比如读取具有 1TB 数据的磁盘,其速度传输速度为 100MB/s,读取完所有数据仍需要 1个小时[2]。所以面对这些不断增长的温度数据,即使再大容量的机器也不能从根本上解决大数据的存储问题;而关系型数据库的缺点是只能存储结构化的数据、没有较好的弹性和容错性等,所以传统的处理模式已经不能满足要求了。而云计算的出现给这些问题带来了生机。云计算是并行计算、分布式计算、虚拟化等技术的结合[3]。目前比较流行的云平台有 Abiquo 公司开发的 AbiCloud,它是一款用于公司的开源的云计算平台,使公司能够以快速、简易和可扩展的方式创建和管理大型、复杂的 IT 基础设施(包括虚拟服务器、网络、应用、存储设备等)[3,4];Enomalism 弹性计算平台,它提供了一个功能类似于 EC2 的云计算框架;Hadoop,是 Google 云计算平台的一个开源实现,主要包括 HDFS 文件系统和 MapReduce编程模型。
本文所设计的数据处理系统采用 Hadoop 框架,利用集群模式来作为本系统所依赖的底层环境,并且配合 HBase 共同构建私有云。HBase 作为数据库存储采集到的数据,并在此系统上进行 MapReduce 程序的编写[5,6];使用 ava Web 技术来编写网页管理界面,使用户能够直接通过浏览器来对数据进行统一的管理操作。本文设计的系统能够很好的处理温度数据,同时对于其他大数据场合同样实用,具有很好的实际应用价值。
..................................
1.2 国内外研究现状
⑴大数据的发展
大数据;是随着 Apache 的开源项目 Nutch 发展而来的。当时 Nutch 项目主要是用来做网页爬虫和优化搜索引擎的,所以会产生大量的数据集,而大数据就是这些数据集的简称。后来 Google 在 2004 年发表了两篇论文:MapReduce 和GoogleFile System(GFS),从此大数据就不仅用来形容数据的容量了,同时还包括了海量数据的处理速度。
早在 1980 年,著名未来学家阿尔文·托夫勒发表了《第三次浪潮》一书,大数据被第一次提了出来,同时他还将大数据热情地赞颂为第三次浪潮的华彩乐章;[7]。
从 2009 年开始,大数据;才成为互联网信息技术行业的流行词汇。美国互联网数据中心指出,互联网上的数据每年将增长 50%,每两年便翻一番,而目前世界上 90%以上的数据是最近几年才产生的[7]。从 2009 年到现在,大数据被越来越多的公司重视,并且开始着手大数据的分析和处理方案的研究,并结合公司自身数据源的特点,开发出合适的数据处理方案。
⑵Hadoop 的发展
2004 年,Apache 的顶级项目 Hadoop 由 Doug Cutting 等人共同开发出来,是为了解决在 Lucene 和 Nutch 等开源项目中遇到的数据处理速度等问题,是 Google发表的 GFS 和 MapReduce 思想的一种开源实现[8]。
2008 年 2 月,雅虎宣布搭建了当时世界上最大规模的 Hadoop 集群系统,Yahoo!Serch Webmap,并用它来进行雅虎日常的广告统计、日志分析和科研实验;亚马逊的搜索网站 A9. 使用 Hadoop 来生成商品搜索的索引[9];全球最大的网上音乐社区 Last.fm 在 Hadoop 上运行着数百种执行各种操作的日常作业,例如日志分析、及时处理和图表生成等;著名社交网站 Faceboo 用 320 多台机器组成的Hadoop 集群构建了整个网站的数据仓库,进行网站的日志分析和数据挖掘等工作[9]。
2008 年之后,越来越多的国内企业也开始对 Hadoop 进行研究,其中包括淘宝、一淘、百度、腾讯、中国移动等等。淘宝是国内最先使用 Hadoop 的公司之一,它的 Hadoop系统用于存储并处理海量的电子商务交易数据;百度广泛使用了Hadoop并对其进行调整和改进,主要用于搜索日志的分析和网页数据的挖掘;中国移动研究院提出了基于 Hadoop 的大云;(BigCloud)系统,并用它来完成数据挖掘和用户行为分析等工作[10]。不只企业界对 Hadoop 青睐有加,学术界里很多科研院所也投入到 Hadoop 的应用和研究中,其中有中科院、清华大学、浙江大学和华中科技大学等。
2021 年被称为是 Hadoop 的商业化元年,随着 Hadoop 的应用日渐广泛,国内越来越多的商业公司加入到这个领域,提供商业化的工具和服务,为 Hadoop 在企业内部的应用注入了一剂强心剂。如今 Hadoop 已经能够处理十分大的数据量了,并且随着互联网的高速发展,新的 Hadoop 业务模式将不断被开发出来,Hadoop的应用也会由互联网领域向物联网、电子金融、医疗卫生、政府办公等领域拓展。相信在不久的将来,Hadoop 将会在越来越多的领域中扮演中坚力量,为我们提供更加优质快捷的服务。
...............................
第 2 章 Hadoop 和 HBase 的理论分析
2.1 Hadoop 架构
2.1.1 Hadoop 概述
在 2005 年,Apache 软件基金会研究出一套用于抓取网页内容和快速检索的软件系统,但是当数据量不断增加并且达到亿数量级的时候,这个系统运行的效率就会十分的低下,他们必须寻找另外的解决办法。在这之后Google 发表了两篇论文 Google File System(GFS)和 MapReduce:Simplified Dataprocessing on Large Clusters。于是在 2004 年,他们借鉴 GFS 的架构实现思想成功开发出了此项目 Nutch 的分布式文件系统 Nutch Distributed File System (NDFS)和MapReduce 。开发者们后来就把这两者独立出来形成一个子项目,它就是Hadoop[12-14]。
Hadoop 集群不需要昂贵的服务器,它建立在普通的 PC 机上就可以,成本比较低,而且它还具有高可靠性和高扩展性等诸多优点,所以受到了很多公司的青睐。2008 年,雅虎在由 900 多节点组成的集群上完成了对 1TB 数据的排序工作,耗费的时间仅仅为 209 秒[15],开创了 Hadoop 应用的新局面。在这之后各大网络公司纷纷开始使用 Hadoop 来处理自己公司内部大数据带来的问题。
Hadoop 是一个能够对大数据进行分布式处理的软件框架,是以一种可靠、高效、可伸缩的方式进行处理的[16]。它不仅具有处理数据速度快的特点,还有以下几个优点:
⑴高可靠性。Hadoop 是采用位级别的方式来进行数据的存储和处理的,因此速度比较快;
⑵高扩展性。Hadoop 采用集群模式来进行分布式计算,如果集群的规模不再能够满足数据的增长,只需要简易的增加节点扩大集群即可,十分的方便。
⑶高效性。分配到每个节点上的数据都能够根据需要迁移到其他节点上,保证了集群间的负载均衡,同时还为高效的处理速度提供了依据。
⑷高容错性。为了避免数据的丢失,Hadoop 提供了一种副本存放的策略,即数据有多个副本,一旦某个节点上的数据丢失,可以很快的从其他节点上恢复过来,保证了系统的安全性。
除了 Hadoop 之外,围绕 Hadoop 的子项目也已经有很多,比如 Avro、Hive、Zooeeper[17]等等,它们都成为了项目中不可或缺的工具,它们的结构如图 2-1 所示:
.......................................
2.2 HBase 数据库分析
2.2.1 HBase 概述
HBase 同样也是 Apache 模仿谷歌 Bigtable 实现的一个数据库系统,它具有强一致性、高性能随机读写等优势。HBase 是通过主键和时间戳来检索数据的,主要用来存储非结构化和半结构化的松散数据[25]。
2.2.2 HBase 数据模型
HBase 的表是一个个按列存储的有序的映射表,它的检索是通过 Row eycolumn 和 timestamp 来完成的。图 2-6 是 HBase 的逻辑模型视图:
从图中可以看出,ey1,ey2,ey3 就是各自记录的唯一一个用于索引的主键;column-family1,column-family2 是两个列族,每个列族下又包括两列,如column-family1 下有两列,分别是 column1 和 column2;t1:abc,t2:bcd 是由 ey1、column-family1 还有 column1 唯一确定的一个单元 cell。这个 cell 中有两个数据 abc和 bcd。但是它们的 timestamp 不同,即它们是在 t1 和 t2 两个不同的时刻存放到cell 中的。下面来具体解释下这些名词的含义:
⑴Row ey。用来检索数据的主键;
⑵列族 column-family。HBase 数据库采用列族的方式来统一管理不同的列,一个列族下的所有列属于一个列族。例如 courses:history,courses:math 两个列,它们都属于 courses 这个列族;
⑶单元 Cell。是由{row ey, column( =<family> + <label>), version} 唯一确定的一个存储单元。跟关系型数据库不同的是,cell 中的数据存储格式是二进制字节码的形式,因此 HBase 中可以存储任意类型的数据。
⑷时间戳 timestamp。时间戳用来区分 cell 中不同版本的数据,默认情况下,HBase 会把最新的数据放到前面。
2.2.3 HBase 系统架构
从图 2-7 中可以看出,HBase 的运行是由 Zooeeper、HMaster 和 HRegionServer等协同完成的,它们扮演着不同的角色,完成不同的功能,它的底层是使用 HDFS来进行数据存储的。
.......................................
第 3 章 Hadoop 集群调度策略的改进..................................... 17
3.1 遗传算法 .................................. 17
3.1.1 概述 ................................... 17
3.1.2 遗传操作 .............................................. 18
3.1.3 算法控制参数...................................... 18
3.1.4 遗传算法流程图 ................................... 19
3.2 WLGA 任务调度算法设计...................................... 19
3.2.1 染色体编码规则 .................................... 19
3.2.2 节点工作负载................................... 20
3.2.3 生成初始种群......................................... 21
3.2.4 建立适应度函数 ..................................... 21
3.2.5 交叉和变异 .......................................... 21
3.3 实验仿真 ............................................ 22
3.3.1 GA 与 WLGA 性能验证实验 .................................... 22
3.3.2 WLGA 与 TDE 性能对比实验 ................................... 23
3.4 本章小结 ............................................ 24
第 4 章 Hadoop 数据处理系统的设计......................................... 25
4.1 数据处理系统设计要求 ...................................... 25
4.2 数据处理系统总体架构 ............................. 25
4.3 HBase 数据库设计 ................................... 26
4.4 数据存储设计...................................... 26
4.4.1 创建表..................................................... 26
4.4.2 删除表...................................... 27
4.4.3 初始化数据格式 ................................................ 27
4.4.4 插入数据 ..................................... 29
4.5 数据查看 .................................... 30
4.5.1 查询表................................... 30
4.5.2 构建图表 ......................................... 31
4.5.3 浏览表................................. 32
4.6 本章小结 ................................... 32
第 5 章 云平台部署和性能测试实验
5.1 硬件环境
系统使用五台普通计算机搭建 Hadoop 集群,其中一台计算机作为 master,其他的四台作为 slave,图 5-1 为 Hadoop 集群的网络拓扑图:
在安装 Hadoop 前修改计算机名称,在每个节点的/etc/hostname 中修改主机名为 master,slave1,slave2,slave3,slave4,然后在各个节点的配置文件/etc/hosts中添加对应的主机名和 IP,使各个节点相互之间能够识别和访问,如下为配置方式:
192.168.1.1 master
192.168.1.2 slave1
192.168.1.3 slave2
192.168.1.4 slave3
192.168.1.5 slave4
5.2 软件环境
本系统所使用的软件环境如下:
操作系统为 ubuntu 12.04.3、Hadoop 版本为 Hadoop 1.0.2、HBase 版本为 HBase0.94.10、Web 服务器是 Tomcat 6、D 版本是 java 1.6.0_30。
5.3 云平台部署
5.3.1 Hadoop 集群搭建
⑴创建 Hadoop 用户组
由于 linux 系统对安全性的要求,需要创建 Hadoop 运行账户,用来操作该集群。首先,需要创建 hadoop 用户组,并给它添加 hadoop 用户[46]:
sudo addgroup hadoopsudo
adduser --ingroup hadoop hadoop
然后为 hadoop 用户添加权限,打开/etc/sudoers (sudo gedit /etc/sudoers),添加如下代码:hadoopALL=(ALL:ALL)ALL,然后切换到刚刚建立的 hadoop 用户下完成后边的工作。
..........................................
结 论
随着科技的进步和社会的发展,人类使用网络,手机等各种智能产品的不断普及,各行各业也正在逐步使用物联网技术,这就导致了数据量的成倍增长,全球已经进入到大数据时代。本文设计的数据处理系统是基于温度传感器,由于传感器无时无刻不在采集数据,随着时间的累计,务必会产生十分巨大的数据量。如果采用传统的处理模式,在将来的某一时刻,硬盘的容量肯定会达到饱和现实,因此传统的数据处理模式已经不能满足数据日益增长的要求了。随着云计算的出现,这个问题被很好的解决了。
本文采用当下使用最广泛的开源云计算框架Hadoop和架构在它之上的数据库HBase 搭建了一个私有云平台,利用这个云平台开发出了应对海量温度数据的处理系统,由于 HBase 数据库是基于 Hadoop 的,因此可以通过简易的增加节点来解决存储容量问题,避免了传统模式所遇到的问题,满足了设计的要求。具体工作内容如下:
⑴对Hadoop的基本原理进行了详细的分析,从架构和实现原理上分析了HDFS响应用户请求的过程以及重点分析了 MapReduce 编程的内部实现。最后阐述了HBase 数据库的组成原理和运行机制,说明了 Hadoop+HBase 的模式确实能够满足设计的需要;
⑵由理论到实践,成功搭建了 Hadoop 的集群环境,并且部署了 HBase 数据库,使两者能够很好的运行,为系统的实现提供了保障;
⑶根据节点的不同情况,对 Hadoop 集群的任务调度策略进行了改进,在不影响任务执行时间的前提下,避免了负载过重的节点仍然被分配任务,保证了集群的安全性和处理数据的能力,为后边系统的实现提供了保障;
⑷根据需求具体设计了系统的实现,包括整体架构和具体代码的编写,并且成功部署在 WEB 环境下,使得用户能够通过网页的形式与系统交互,提高了该系统的实用性;
⑸对 Hadoop 集群和 HBase 数据库进行了相关的测试,保证了系统的运行,避免了由于时间关系导致的系统运行不正常等情况发生。
.........................................
参考文献(略)