高级数据库结课论文_第1页
高级数据库结课论文_第2页
高级数据库结课论文_第3页
高级数据库结课论文_第4页
高级数据库结课论文_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

题目:基于HBase的数据存储与管理研究目录TOC\o"1-5"\h\z摘要1一、概述1二、研究背景1三、HBase分布式数据库21、HBase与Hadoop及其组件的关系22、HBase系统架构33、HBase存储结构54、HBase数据模型9四、总结与建议12五、主要参考文献12《高级数据库技术》课程报告《高级数据库技术》课程报告#一、概述近年来全球互联网络的发展网民数量、网络应用数量都呈现了激增的态势。用户逐渐由信息的被动接收者转变为信息的接收者和制造者。整个互联网生态系统中,用户贡献内容成为数据的一个重要来源。除此之外,越来越多的数据在社交网站、电子商务网站、搜索引擎网站等物理分隔的服务器上不断自动生成。面对庞大的、结构复杂的海量数据的存储和读取问题,传统关系型数据库已经无法满足需求。此时,云计算作为一种计算和存储能力近乎无限、可靠性高、可伸缩性强的新技术迅速得到企业和学者们的重视。网络将分散的计算机上的分布式数据库连接起来,用户的请求通过所有节点来处理,大大提高了数据的读写能力。Hadoop就是一种用来存储和处理海量数据的开源云计算系统。二、研究背景21世纪初,谷歌公司的几位年轻研究人员用廉价PC搭建了大型的MPP系统,成功解决了搜索引擎所需要的大型文件系统的管理和操作问题,随后分别于2003年、2004年和2006年在操作系统两个著名的学术会议SOSP和0SDI上发表了有关GFS(Google文件系统)、MapReduce(编程环境)和BigTable(数据模型)的论文。这三篇奠基性的论文促成了Hado°p的诞生。2004年,CuttingD和CafarellaMJ根据GoogleLab论文实施,取名Hadoop。从Hadoop0.21开始HDFS和MapReduce成为独立的子项目。MapReduce是分布式并行计算框架是Hadoop的核心。HDFS所起的作用就是使得每个服务器必须具备对数据的访问能力。2006年,HBase(BigTable)分布式列存储数据库成为Hadoop子项目,它架构在HDFS之上。同年,AnkurKhetrapal和VinayGanesh从技术要求、技术架构、技术评价标准以及缺陷四个方面比较了HBase和Hypertable这两种实现BigTable功能的开源数据库的技术相似性、不同点和处理能力⑴。通过实验作者认为Hypertable(0.9.12)在主节点上运行时会相对不稳定,在大于GB的数据读入时尤为明显。相比之下,HBase在单节点的运行性能比Hypertable的可靠性更高。CraigFranke研究了基于HBase的分布式语义网数据管理系统[2]。随着机器可理解的语义描述越来越多地应用于服务搜索、发现和集成,网络中的计算数据资源越来越多。作者研究和比较了云计算和传统的关系型数据库聚类技术基础上的两种方法RDF数据分布式管理,设计了一种基于HBase和MySQL簇的分布式RDF数据存储和查询方案,通过实证研究验证了所提出的算法是有效的,也说明云计算在可扩展的语义web数据管理方面有着巨大的潜力。ShojiNishimura设计了一种基于位置服务的可扩展数据库-MD-Hbase[3]。基于位置的服务和应用的增长产生了大规模的数据,适用于这种数据的管理系统在满足有效的实时分析之外还要能适应数据的高插入率。基于键值的存储虽然能支持大规模的扩展操作,但是不支持多属性查询功能,因此进行了改进。在键值存储结构之上建立多维索引结构,底层的键值存储保证了系统的可插入性和容错性,上层的索引值保证了高效率的多维查询处理。模型中的键值存储原型即为HBase。国内的学者也对HBase做了相关探索。崔杰研究了基于Hadoop的海量数据存储平台设计与开发⑷。海量的海洋科学数据经过MapReduce计算以后按其K指作为行关键字,使用HBase分布式数据库实现存储和管理海量数据功能。范建永研究了基于HBase的矢量空间数据分布式存储和一种基于MapReduce的并行构建网格空间索引方法,大大加快索引构建的处理速度⑸。李桥兴利用分布式文件系统HBase的数据存储结构特征,采用可拓学基元对异构数据集进行整合处理并存储在HBase数据库⑹。通过提取数据特别是半结构化和非结构化数据的典型特征和属性取值并转换为基元后生成一个新的数据集,为数据分析和数据解释提供一种新的实现方式。三、HBase分布式数据库1、HBase与Hadoop及其组件的关系HBase是ApacheHadoop的数据库,能够对大型数据提供随机、实时的读写访问。Hadoop是一个能够对海量数据分布式处理的平台,它的核心模块有:HadoopDistributedFileSystem(HDFS)、HadoopMapreduce、HadoopHBase和HadoopZooKeeper。HBase对应Google云计算系统的BigTable,目标是存储和处理大型数据。其他组件的主要作用、与Google云计算系统的对应关系以及对HBase的支持作用如表3.1所示:表3.1Hadoop组件与HBase的关系Hadoop作用对HBase的支持对应的Google云计算系统HadoopHDFS为整个Hadoop平台提供数据的存储、管理和错误处理功能咼可靠的底层存储支持GoogleGFSHadoopMapReduce基于映射和化简思想,支持大规模数据集的并行运算高性能的计算能力GoogleMapReduceHadoopZooKeeper解决分布式集群中应用系统的一致性问题。它能提供基于类似于文件系统的目录节点树方式的数据存储稳定服务和failover机制GoogleChubby基于以上各组件的支持,可将HBase数据库的特点总结如下:1、高可靠性:作为底层存储支持平台,HBase的很多数据存储在HDFS平台中。HDFS平台以数据备份技术作为基础,提出了一种数据备份模型以适应云存储的需求。副本是一种提高数据访问效率与容错性能力的技术,能够在原始数据丢失的时候,帮助用户恢复数据。2、高效性:MapReduce的分布式编程模型系统来管理多个大规模计算过程,提高了计算效率。3、实时性:HBase作为数据存储引擎能够为大数据提供实时的读/写操作,但根据实际情况来看,HBase在实时的数据写入性能上优于查询性能。2、HBase系统架构HBase为主从式架构,由一个Master节点、多个Regionserver节点和客户端3部分组成.Master节点作为HBase的中心,管理整个集群中的所有个Regionserver,监控每个表服务器的运行情况等⑺。Regionserver接收来自Master分配的子表、处理客户端的读写请求、缓冲区回收、压缩和分割Regionserver等功能。Client主要负责查找用户子表所在的Regionserver地址信息。HBase系统中还包括一个用于监控集群状态的ZooKeeper集群。ZooKeeper集群保存着HBase数据库元数据所在节点的IP地址,客户端通过ZooKeeper集群找到元数据,进而找到需要访问的Regionservero最后Regionserver还要和HDFS通信,将文件存储在其中。图3.1HBase系统架构(1)Master节点HBase中可以存在多个Master节点,但其中没有单点问题。因为HBase中可以启动多个HMaster,但通过Zookeeper的MasterElection即选举机制保证总有一个Master运行。Master节点不存储HBase中的任何数据,它负责HBase中表和Region的管理,具体如下:管理用户对table的增、删、改、查操作;为Regionserver节点分配Region,Region用来存储HBase表中的数据;对Regionserver进行负载均衡;调整Region分布迁移已失效Regionserver上的Region到其他Regionservero(2)ZooKeeperZooKeeper是ApacheHadoop的一个正式子项目,它是一个分布式的、开源的分布式程序协调服务,是GoogleChubby的一个开源实现。它提供一个了类似文件系统的层次命名空间,与文件系统不同的是,ZooKeeper的命名空间中的数据节点也可以有孩子节点,就像文件系统中的一个文件同时也可以作为一个文件夹。HBase中ZooKeeper的作用有以下三个:Master节点选举,保证集群中只有一个Master节点;存储-ROOT-表地址、Master地址;监控所有Regionserver的状态,RegionServer会把自己以Ephemera1方式注册至到Zookeeper中,使得HMaster可以随时感知到各个HRegionServer的健康状态,进而将Regionserver的上线和下线信息实时通知Mastero(3)Regionserver节点Regionserver主要负责响应用户I/O请求,存储表文件,向HDFS文件系统中读写数据,是HBase中最核心的模块。Master节点记录了当前所有Region的状态,包括已经分配的Region分配给了哪些Regionserver,哪些Region还未分配。一个Region在任何时刻只能分配给一个Regionserver。当客户端请求写数据时,如果存在未分配的Region并且有一个Regionserver上有可用的空间,主控节点就将这个Region分配给该Regionserver并通知它,分配的Region会随机生成一个Region标示符与之对应。Regionserver负责维护Master节点分配给它的Region,处理客户端对Region的读写请求,Regionserver运行在Hadoop集群中的DataNode节点上。Regionserver内部管理了一系列Region对象,每个Region对应了Table中的一个Region,Region中由多个Store组成。每个Store对应了Table中的一个ColumnFamily的存储,每个ColumnFamily就是一个集中的存储单元。(4)ClientClient主要有以下功能:使用HBaseRPC机制与HMaster和HRegionServer进行通信Client与HMaster进行通信进行管理类操作Client与HRegionServer进行数据读写类操作3、HBase存储结构在HBase中,RegionServer集群负责维护分配给它们的Region,响应客户端的数据读写请求。数据在RegionServer集群中的组织方式如图3.2所示。由图3.2可以看出HBase的存储核心是由MemStore和StoreFile组成的。MemStore是SortedMemoryBuffer。用户进行写操作时,数据首先存入MenStore中,当MenStore满时,HBase将其数据写入文件中,这个文件的大小等于MenStore的阈值,这个文件即StoreFile。随着用户的写操作不断进行,数据量不断增加,StoreFile增长到一定的阈值时,触发合并操作,多个StoreFile合并成一个StoreFile,同时进行版本合并和数据删除。合并操作后,StoreFile形成越来越大的StoreFile,单个StoreFile的大小超过一定阈值后触发Split操作,把当前的RegionSplit成2个Region,父Region下线,两个新的子Region会被Master分配到相应的Regionserver上,从而使得1个Region的压力得以分流到2个Region上。具体操作过程如图3.3所示。

StoreFilelStoreFile2StoreFile3StoreFile4StoreFilelStoreFile2StoreFile3StoreFile4图3.3StoreFile的compact和split过程由此过程可知,HBase只是增加数据,更新和删除操作都是在合并阶段进行的。这样用户写操作只需要进入内存即可立即返回,从而保证I/O高性能。HBase的所有数据文件都存储在HadoopHDFS文件系统上,格式主要有两种:HLog和HFile。(1)HLog在分布式环境中,系统的容错能力是一个很重要的指标。在HBase中,一旦RegionServer意外退出,MemStore中的内存数据就会丢失,因此引入了Hlog。HLog是一个预读式日志(WriteAheadLogging)。每个RegionServer中都有一个HLog对象,每次用户操作写入MemStore的同时也会写一份数据到Hlog文件。类比于面向关系数据库的日志文件,当HRegionServer意外终止后,HMaster会先处理遗留的HLog文件,ReplayHLog中的数据到MemStroe中,然后flush到StoreFile中,完成数据恢复。HLog文件结构如图所示:RegionARegionBRegionC11riFvrV1FHlogKeyHlogKeyHlogKeyKeyValueKeyValueKeyValue图3.4HLog文件结构HLog文件就是一个普通的HadoopSequenceFile。其中HLogKey中记录了写入数据的归属信息,包括表名、region名、顺序号和写入时间。顺序号的起始值为0或者最近一次存入文件系统的顺序号。HFileHFile是Hadoop的二进制格式文件,实际上StoreFile就是对HFile做了轻量级包装,即StoreFile底层就是HFile。HFile的存储格式如下图所示:DataDataDataMetaMetaFileInfodataindexmetaindexTrailerMagiKeyKeyKeyKeyKeyKeyKeycValueValueValueValueValueValueValue图3.5HFile的存储格式a)DataBlock:HBaseI/O的基本单元,存储KeyValue数据。MetaBlock:可选快,保存BloomFilter信息等,BloomFilter可以用来判断一个RowKey是否在这个HFile中。FileInfo:保存HFile的基本信息DataBlockIndex:DataBlock的索引,记录每个DataBlock的起始位置、大小及DataBlock中的第一个RowKey。MetaBlockIndex:MetaBlock的索引,记录每个MetaBlock的起始位置、大小等。Trailer:记录FileInfo、DataBlockIndex和MetaBlockIndex的起始位置。当读取一个HFile文件时,首先读取Trailer块,通过Trailer将DataBlockIndex的内容保存到内存中,这样,当检索某个RowKey时,HBase只需从内存中找到RowKey所在的DataBlock,然后将这个DataBlock读入内存,进而找到所需的RowKey。DataBlock的大小可以在创建表的时候通过参数指定,默认值为64KB。通过上述读取过程可以看到,DataBlock的大小将会对记录的查询操作产生一定的影响,较大的DataBlock有利于顺序的scan操作,较小的DataBlock有利于随机查询。(3)KeyValue键值对分析KeyValue即“键-值对”是HBase数据存储的核心,由图3.6可以看至到,DataBlock中存储的KeyValue是连续排列的,每个KeyValue对就是一个简单的byte数组。这个byte数组里面包含了很多项,并且有固定的结构。它包含四个字段,分别是KeyLength、ValueLength、Key和Value,其结构如图3.7所示。1Key1KeyValueValueLengthRowLengthRowColumnFamilyLengthColumnFamilyColumnQualifierTimeStampKeyTypeValue4B4B2B1B8B1B图3.6KeyValue的结构KeyLength和ValueLength:两个固定的长度,分别代表Key和Value的长度Key部分:RowLength是固定长度的数值,表示RowKey的长度,Row字段存储RowKey的名字ColumnFamilyLength是固定长度的数值,表示Family的长度ColumnFamily字段存储列族名,ColumnQualifie字段存储列名,TimeStamp和KeyType(Put/Delete)是两个固定长度的数值Value存储二进制数据。KeyValue作为一个整体不会被分割存储到多个DataBlock中,即使一个KeyValue的大小超过了DataBlock的大小,它仍然被视作一个连贯的块读出。4、HBase数据模型关系型数据库围绕着表、列和数据类型来构建数据模型的,数据的形态都有严格的规则。HBase的数据模型设计没有严格的形态,数据记录的列可以不一致、大小不确定、可以没有类型的半结构化数据⑻。针对半结构化数据,HBase在设计逻辑模型时会影响到其物理模型的设计。同时,物理模型的不同也会影响到逻辑模型。(1)逻辑模型HBase以表的形式存储数据。表有行和列组成。列划分为若干个列族(rowfamily),,列的定义为:vColumnFamily>:vqualifier>。由行和列所确定的单元格称为cell,HBase的更新操作都有时间戳,对于每个cell,HBase将存储指定个数的最新版本,客户端默认获取最新版本的内容。Cell没有数据类型,只能存放字节数组(bytearray)。HBase中的表有3个基本的列,分别是RowKey、Timestamp和ColumnFamily,其中RowKey是主键,表中的各行按照RowKey的字节序排序。如表3.2所示为HBase表的逻辑视图。表3.2HBase表的逻辑视图RowKeyTimeStamp列族“contens"列族“anchor"n.WWWt9CNNt8CNN.comt6vhtml>deft5vhtml>abct3vhtml>…表3.2所示为HBase的表中的一行记录,其RowKey为“n.www"。RowKey:行键,Table的主键,Table中的记录按照RowKey排序。RowKey格式为字节数组,任何能够转换为字节数组的元素都可以作为RowKey,RowKey的大小并不固定,最大长度为64KB。Timestamp:时间戳,用于管理cell的版本,当向表中插入数据的时候HBase自动生成TimeStamp,每个cel1中,不同版本的数据按照时间倒序排序,即最新的数据排在最前面。每次数据操作对应的时间戳,可以看作是数据的versionnumberc)ColumnFamily:列簇,Table在水平方向有一个或者多个ColumnFamily组成,一个ColumnFamily中可以由任意多个Column组成,ColumnFamily必须在创建表的时候预先定义,一旦表创建完成列族就不能更改了,但列族中的列可以根据需要随时添加即ColumnFamily支持动态扩展,无需预先定义Column的数量以及类型,因此HBase可以支持表中的两行记录有不同的列。在HBase中,对数据库中的表的访问控制、对内存和磁盘的使用情况统计都是在列族层面进行的。在HBase中,要访问表中的记录,只有三种方式:通过指定某一行记录的RowKey访问;通过指定RowKey的范围访问满足条件的一些记录;扫描整张表。(2)物理模型HBase中的表由行和列组成,列按照列族分组,这个在逻辑模型中表现为映射的映射。列族在物理模型中的表现为它的每个列族在硬盘上存储为各自的HFile文件。这种物理上的隔离允许在列族底层HFile层面上分别进行管理。HBase的数据按照键值对存储在HFile里。HFile是二进制文件,一行中一个列族的数据不一定存放在同一个HFile里,可能分散在多个HFile里。但是一行中列族的数据物理上是存放在一起的。如果单元内没有数据,HBase是不会存储任何东西的。当执行读操作时HBase不需要读出一行中所有的数据,只需要读取用到列族的数据。面向列意味着当检索指定单元时,HBase不需要读占位符记录。这两个物理细节有利于稀疏数据集合的高效存储和快速读取。上表3.2的逻辑视图对应的物理视图如表3.3、表3.4、所示,表示物理上按列存储,保存了数据的多个版本。表3.3表的物理模型(列族contents)RowKeyTimeStamp列族“contents"列名值n.wwwt6contents:htmlvhtml>n.wwwt5contents:htmlvhtml>n.wwwt3contents:htmlvhtml>…表3.4表的物理模型(列族anchor)RowKeyTimeStamp列族“anchor"列名值n.wwwt9anchor:CNNn.wwwt8anchor:mv.look.caCNN.com由HBase表的逻辑模型和物理模型,可将其特点总结如下:a)大:一个表可以有上亿行,上百万列b)面向列:面向列(族)的存储和权限控制,列(族)独立检索。c)稀疏:对于为空(null)的列,并不占用存储空间,因此,表可以设计的非常稀疏。5、HBase数据库的应用HBase数据库在处理海量数据方面可以有效地改进传统数据库对于过亿记录数据表的查询、更新等操作效率低下的问题,减少对网络资源的消耗、提高数据存储效率和访问的实时性。这些特点是HBase在以下领域的应用有很好的前景:(1)社交网站的数据管理社交网站是如今互联网系统数据来源的主要入口。信息由庞大的普通用户群体提供数量大、结构复杂,同时这些信息是具有标签性的含义的,传统的数据库很难对数据进行存储和处理。利用HBase,可以将不同的数据根据其语义特点放在不同的RegionServer,然后利用一个全局HBase保存全局信息,记录所有的RegionServer、区域信息及信息内容结构等[9]。这样通过对数据的整合处理可以实现简单的数据分类,提高查询效率。(2)电子商务网站的数据管理伴随着中国电子商务的发展海量的交易记录随之产生,如何有效地对这些交易记录进行存储、查询、分析是一个巨大的挑战[8]。关系数据库无法满足对海量数据的高效率存储,也无法满足动态扩展和高可用性的需求。基于Hadoop平台,可以设计采用HBase数据库的四层系统,从而实现海量交易记录查询系统。(3)RDF数据存储系统随着语义网的提出RDF作为一种用于表达语义信息,能在应用间交换且不丧失语义的通用框架得到了广泛关注。RDF在提供灵活、强大的数据表述能力的同时也带来了数据存储和查询的问题[11]。有研究人员就试图将云计算与语义网结合起来以期解决海量RDF数据存储和查询难题。四、总结与建议大数据的产生将人们带入了一个新的发展阶段。企业面临着新的挑战和机遇,学者面临着新的研究问题,他们都在试图能乘上这辆快车。若要达到应用级,首先就要解决存储级的问题,云计算平台Hadoop应运而生,本文重点介绍了Hadoop系统的子项目HBase数据库。首先介绍了Hadoop各组件与HBase的关系。作为Hadoop的核心技术,HDFS和MapReduce对HBase有着重要的支持作用。HDFS是一个高容错的文件系统,支持高吞吐量的应用程序数据访问,是Hbase的基础层,对提高HBase的可靠性至关重要。MapReduce是一种适合对数据进行分布式计算的计算模式,通过提供Map和Reduce函数完成数据的并行式计算。然后本文介绍了HBase的技术架构和存储架构。在技术架构上,HBase为主从式架构,由一个Master节点、多个Regionserver节点和客户端3部分组成,本文详细阐述了各节点的作用及ZooKeeper项目对集群的管理作用。在存储机构部分,先介绍了HBase的写数据过程,然后介绍了HLog和HFile两种存储格式及两种格式每个数据块的含义。紧接着介绍了HBase的数据模型,从逻辑模型和物理模型

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论