第5章-Hadoop分布式数据库HBASE.pptx

上传人:可****阿 文档编号:76413573 上传时间:2023-03-10 格式:PPTX 页数:32 大小:1.13MB
返回 下载 相关 举报
第5章-Hadoop分布式数据库HBASE.pptx_第1页
第1页 / 共32页
第5章-Hadoop分布式数据库HBASE.pptx_第2页
第2页 / 共32页
点击查看更多>>
资源描述

《第5章-Hadoop分布式数据库HBASE.pptx》由会员分享,可在线阅读,更多相关《第5章-Hadoop分布式数据库HBASE.pptx(32页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第5章 Hadoop分布式数据库HBASE目 录1HBaseHBase简介简介HBaseHBase数据模型数据模型HBaseHBase体系结构体系结构235.1.1 HBase5.1.1 HBase简介简介HBaseHBase(Hadoop DatabaseHadoop Database)是一个分布式的、面向列的开源)是一个分布式的、面向列的开源NoSQLNoSQL数据库,是针对谷歌数据库,是针对谷歌BigtableBigtable的开源实现。的开源实现。HBaseHBase是是ApacheApache的的HadoopHadoop项目的子项目,被设计用来提供高可靠性、高项目的子项目,被设计用来

2、提供高可靠性、高性能、面向列、可伸缩的分布式数据存储系统,实现对大型数性能、面向列、可伸缩的分布式数据存储系统,实现对大型数据的实时、随机的读写访问。据的实时、随机的读写访问。HBaseHBase是是HadoopHadoop生态系统的一部分,通常使用生态系统的一部分,通常使用HDFSHDFS作为高可靠的作为高可靠的底层存储,利用廉价集群提供海量数据的存储能力。底层存储,利用廉价集群提供海量数据的存储能力。5.1.2 HBase5.1.2 HBase数据模型数据模型1 1、数据模型、数据模型在在HBaseHBase中,数据是存储在有行有列的表格中,与关系型数据库中,数据是存储在有行有列的表格中,

3、与关系型数据库相比,相比,HBaseHBase中表的特点如下:中表的特点如下:(1 1)可容纳的数据规模大。)可容纳的数据规模大。HBaseHBase中单表可容纳数十亿行,上中单表可容纳数十亿行,上百万列,且无性能问题。若关系型数据库的表达到如此规模,百万列,且无性能问题。若关系型数据库的表达到如此规模,则查询和写入性能将严重下降。则查询和写入性能将严重下降。(2 2)无模式。不像关系型数据库表有严格的模式结构,)无模式。不像关系型数据库表有严格的模式结构,HBaseHBase表结构不固定,每行可以有任意多的列,而且列可以根据需要表结构不固定,每行可以有任意多的列,而且列可以根据需要动态增加,

4、不同行可以有不同的列。动态增加,不同行可以有不同的列。5.1.2 HBase5.1.2 HBase数据模型数据模型(3 3)具有稀疏性。)具有稀疏性。HBaseHBase中值为空的列不占存储空间,表可以中值为空的列不占存储空间,表可以非常稀疏,但实际存储时,能进行压缩。非常稀疏,但实际存储时,能进行压缩。(4 4)面向列。面向列(族)的存储和权限控制,支持列(族)面向列。面向列(族)的存储和权限控制,支持列(族)独立检索。关系型数据库表中的数据是按行进行存储的,且数独立检索。关系型数据库表中的数据是按行进行存储的,且数据量大时,通过索引提高查询速度,而创建及维护索引都需要据量大时,通过索引提高

5、查询速度,而创建及维护索引都需要耗费大量的时间和空间。而耗费大量的时间和空间。而HBaseHBase中数据是按列存储,检索数据中数据是按列存储,检索数据只需访问所涉及列的数据,大大降低了系统的只需访问所涉及列的数据,大大降低了系统的I/OI/O。5.1.2 HBase5.1.2 HBase数据模型数据模型(5 5)数据多版本。每个单元中的数据可以有多个版本,通常利)数据多版本。每个单元中的数据可以有多个版本,通常利用时间戳来标识版本。用时间戳来标识版本。HBaseHBase中没有修改操作,执行更新操作时,中没有修改操作,执行更新操作时,并不会删除数据旧的版本,而是生成一个新的版本。并不会删除数

6、据旧的版本,而是生成一个新的版本。(6 6)数据类型单一。)数据类型单一。HBaseHBase中只有字符串类型,只保存字符串。中只有字符串类型,只保存字符串。而关系型数据库表中有较多数据类型。而关系型数据库表中有较多数据类型。5.1.2 HBase5.1.2 HBase数据模型数据模型HBaseHBase数据模型中涉及到一些专业术语,具体如下:数据模型中涉及到一些专业术语,具体如下:(1 1)TableTable(表)(表)HBaseHBase使用表存储数据,表由行和列组成,列划分为若干个列族,使用表存储数据,表由行和列组成,列划分为若干个列族,是稀疏表,即不存储值为是稀疏表,即不存储值为NU

7、LLNULL的数据。的数据。(2 2)RowRow(行)(行)每个每个HBaseHBase表由若干行组成,每行里面包含一个行键(表由若干行组成,每行里面包含一个行键(Row Row KeyKey)和一个或者多个列。行由行键唯一标识。)和一个或者多个列。行由行键唯一标识。(3 3)Row KeyRow Key(行键)(行键)Row KeyRow Key是用来唯一确定一行的标识,不同的行键代表不同的行,是用来唯一确定一行的标识,不同的行键代表不同的行,是检索记录的主键,必须在设计上保证其唯一性。访问表中的是检索记录的主键,必须在设计上保证其唯一性。访问表中的行只有三种方式:通过单个行键访问;通过一

8、个行键的范围来行只有三种方式:通过单个行键访问;通过一个行键的范围来访问;全表扫描。行键可以是任意字符串,数据按照行键的字访问;全表扫描。行键可以是任意字符串,数据按照行键的字母顺序存储在表中,因此行键的设计非常重要,需要将经常一母顺序存储在表中,因此行键的设计非常重要,需要将经常一起读取的行存储在一起。数据的存储目标是相近的数据存储到起读取的行存储在一起。数据的存储目标是相近的数据存储到一起。比如,若行键格式是网站域名,则可以将域名进行反转一起。比如,若行键格式是网站域名,则可以将域名进行反转(org.apache.www,org.apache.mail,org.apache.jira)(o

9、rg.apache.www,org.apache.mail,org.apache.jira)再存再存储。这样的话,所有储。这样的话,所有ApacheApache域名将会存储在一起。域名将会存储在一起。(4 4)Column FamilyColumn Family(列族)(列族)HbaseHbase表中的每个列,都归属于某个列族。列族是表模式的一部表中的每个列,都归属于某个列族。列族是表模式的一部分,必须在表使用前定义,每个表至少有一个列族。一个列族分,必须在表使用前定义,每个表至少有一个列族。一个列族的所有列具有相同的前缀,列可以表示为的所有列具有相同的前缀,列可以表示为:,例如列例如列cla

10、ss:nameclass:name,class:snoclass:sno都属于都属于classclass这个列族。这个列族。(5 5)CellCell(单元)(单元)HBaseHBase中值是作为一个单元存储在系统中,是由行键、列族、列中值是作为一个单元存储在系统中,是由行键、列族、列限定符和时间戳唯一确定的单元。限定符和时间戳唯一确定的单元。CellCell中的数据全部是字节数中的数据全部是字节数组,以二进制形式存储。组,以二进制形式存储。(6 6)TimestampTimestamp(时间戳)(时间戳)时间戳是写在值旁边的一个用于区分值的版本的数据。默认情时间戳是写在值旁边的一个用于区分值

11、的版本的数据。默认情况下,时间戳表示的是当数据写入况下,时间戳表示的是当数据写入HRegionSeverHRegionSever时系统自动赋时系统自动赋值的时间点,也可以在写入数据时指定一个不同的时间戳。但值的时间点,也可以在写入数据时指定一个不同的时间戳。但为避免数据版本冲突,必须保证时间戳的唯一性。时间戳的类为避免数据版本冲突,必须保证时间戳的唯一性。时间戳的类型一般是型一般是6464位整型。每个位整型。每个CellCell中,不同版本的数据按照时间倒中,不同版本的数据按照时间倒序排序,即最新的数据排在最前面,可以被最先读取。序排序,即最新的数据排在最前面,可以被最先读取。接下来用一个实例

12、来解释接下来用一个实例来解释HBaseHBase的数据模型,如下图的数据模型,如下图5-15-1所示。所示。2 2、概念视图、概念视图 若在关系型数据库中有一张客户表若在关系型数据库中有一张客户表CustomerCustomer,主要包括客,主要包括客户编号(户编号(cidcid)、姓名()、姓名(namename)、所在城市()、所在城市(citycity)、电话)、电话(teltel)四个字段,主键为)四个字段,主键为cidcid。如下表。如下表5-15-1所示:所示:cidcidnamenamecitycityteltel101101J JanyanyBeijingBeijing1390

13、809888813908098888102102P PettyettyS Shanghaihanghai1389090666613890906666主键可以唯一标识一行记录,所以很容易通过客户编号找到其主键可以唯一标识一行记录,所以很容易通过客户编号找到其电话号码,但如果碰到以下问题该如何处理?电话号码,但如果碰到以下问题该如何处理?(1 1)如果新增客户编号为)如果新增客户编号为“101”“101”的客户属性性别为的客户属性性别为“女女”,能否不修改表结构的情况下保存其性别信息?能否不修改表结构的情况下保存其性别信息?(2 2)如果客户编号为)如果客户编号为“101”“101”的客户有了新的

14、电话号码的客户有了新的电话号码“13890906699”“13890906699”,能否保存新旧两个电话号码?,能否保存新旧两个电话号码?(3 3)如果某个客户只有客户编号、姓名和电话信息,而没有所)如果某个客户只有客户编号、姓名和电话信息,而没有所在城市的信息,能否只存储客户编号、姓名和电话信息而节省在城市的信息,能否只存储客户编号、姓名和电话信息而节省存储空间呢?存储空间呢?而对于而对于HBaseHBase,以上需求可以完美解决。下表,以上需求可以完美解决。下表5-25-2将客户表将客户表CustomerCustomer转为转为HBaseHBase中的概念视图。中的概念视图。行键行键(ci

15、dcid)时间戳时间戳列族(列族(resumeresume)列族(列族(attachattach)列列值值列列值值101101t t6 6resumeresume:namenameJ Janyany t t5 5 attachattach:citycityBeijingBeijing t4t4 attachattach:teltel1390809888813908098888102102t3t3resumeresume:namenameP Pettyetty t2t2 attachattach:citycityS Shanghaihanghai t t1 1 attachattach:telt

16、el1389090666613890906666(1 1)新增客户编号为)新增客户编号为“101”“101”的客户属性性别为的客户属性性别为“女女”,不需,不需要修改表结构(列族结构不变)保存其性别信息,只需插入数要修改表结构(列族结构不变)保存其性别信息,只需插入数据,列据,列attachattach:xbxb赋值为赋值为“女女”即可。如下表所示:即可。如下表所示:行键行键(cidcid)时间戳时间戳 列族(列族(resumeresume)列族(列族(attachattach)列列值值列列值值101101t t7 7 attachattach:xbxb女女 t t6 6resumeresum

17、e:namenameJ Janyany t t5 5 attachattach:citycityBeijingBeijing t4t4 attachattach:teltel1390809888813908098888102102t3t3resumeresume:namenameP Pettyetty t2t2 attachattach:citycityS Shanghaihanghai t t1 1 attachattach:teltel1389090666613890906666(2 2)客户编号为)客户编号为“101”“101”的客户有了新的电话号码的客户有了新的电话号码“1389090

18、6699”“13890906699”,可以保存新旧两个电话号码,只需插入数据列可以保存新旧两个电话号码,只需插入数据列attachattach:teltel赋值为赋值为“13890906699”“13890906699”即可,如下表所示。因为数据是以时间戳降序排列,即可,如下表所示。因为数据是以时间戳降序排列,所以如果读取行键为所以如果读取行键为“101”“101”的电话默认是最新电话。的电话默认是最新电话。行键行键(cidcid)时间戳时间戳 列族(列族(resumeresume)列族(列族(attachattach)列列值值列列值值101101t t8 8 attachattach:tel

19、tel1389090661389090669999 t t7 7 attachattach:xbxb女女 t t6 6resumeresume:namename J Janyany t t5 5 attachattach:citycityBeijingBeijing t4t4 attachattach:teltel1390809888813908098888102102t3t3resumeresume:namename P Pettyetty t2t2 attachattach:citycityS Shanghaihanghai t t1 1 attachattach:teltel138909

20、0666613890906666(3 3)HBaseHBase是基于稀疏设计,没有数据即不需存储。是基于稀疏设计,没有数据即不需存储。3 3、物理视图、物理视图从概念视图层面看,从概念视图层面看,HBaseHBase中每个表是由许多行组成,但在物理中每个表是由许多行组成,但在物理层面,层面,HBaseHBase并不像关系型数据库采用基于行的存储方式,而是并不像关系型数据库采用基于行的存储方式,而是采用了基于列的存储方式。采用了基于列的存储方式。5.1.3 HBase5.1.3 HBase体系结构体系结构HBaseHBase采用主采用主/从服务器结构,它由从服务器结构,它由HBase Maste

21、rHBase Master服务器和服务器和HRegionHRegion服务器群构成。服务器群构成。HBase MasterHBase Master服务器负责管理所有的服务器负责管理所有的HRegionHRegion服务器,而服务器,而HBaseHBase中所有的服务器都是通过中所有的服务器都是通过ZooKeeperZooKeeper来来进行协调,并处理进行协调,并处理HBaseHBase服务器运行期间可能遇到的错误。服务器运行期间可能遇到的错误。HBase Master ServerHBase Master Server本身不存储任何数据,本身不存储任何数据,HBaseHBase逻辑上的表逻辑

22、上的表可能会被划分为多个可能会被划分为多个HRegionHRegion,然后存储到,然后存储到HRegion ServerHRegion Server群中,群中,HBase Master ServerHBase Master Server中存储的是从数据到中存储的是从数据到HRegion ServerHRegion Server中的中的映射。映射。HRegion serverHRegion server负责数据的读写服务。负责数据的读写服务。5.1.3 HBase5.1.3 HBase体系结构体系结构5.1.3 HBase5.1.3 HBase体系结构体系结构1 1、ClientClientH

23、Base ClientHBase Client使用使用HBaseHBase的的RPCRPC(远程过程调用)机制与(远程过程调用)机制与HBase HBase MasterMaster服务器和服务器和HRegionHRegion服务器进行通信。对于管理类操作,服务器进行通信。对于管理类操作,ClientClient与与HBase MasterHBase Master服务器进行服务器进行RPCRPC;对于数据读写类操作,;对于数据读写类操作,ClientClient与与HRegionHRegion服务器进行服务器进行RPCRPC。5.1.3 HBase5.1.3 HBase体系结构体系结构2 2、

24、ZookeeperZookeeper服务器服务器ZooKeeperZooKeeper维护着集群中服务器的状态并协调分布式系统的工作。维护着集群中服务器的状态并协调分布式系统的工作。ZooKeeperZooKeeper维护服务器是否存活,是否可访问的状态并提供服务器故维护服务器是否存活,是否可访问的状态并提供服务器故障或者宕机的通知。障或者宕机的通知。HRegionServerHRegionServer会把自己注册到会把自己注册到ZookeeperZookeeper中,使中,使得得HMasterHMaster可以随时感知到各个可以随时感知到各个HRegionServerHRegionServer

25、的健康状态。的健康状态。ZooKeeperZooKeeper同时还使用一致性算法来保证服务器之间的同步,同时也同时还使用一致性算法来保证服务器之间的同步,同时也负责负责MasterMaster选举的工作。因为选举的工作。因为HBaseHBase中可以启动多个中可以启动多个MasterMaster,但,但ZooKeeperZooKeeper可以帮助选举出一个可以帮助选举出一个MasterMaster作为集群的总管,并保证在任作为集群的总管,并保证在任何时刻总有唯一一个何时刻总有唯一一个MasterMaster在运行,由此避免了在运行,由此避免了MasterMaster的的“单点失效单点失效”问题

26、。问题。5.1.3 HBase5.1.3 HBase体系结构体系结构3 3、HBase MasterHBase Master服务器服务器每台每台HRegionHRegion服务器都会和服务器都会和HMasterHMaster服务器通信,服务器通信,HMasterHMaster的主要的主要任务就是要告诉每台任务就是要告诉每台HRegionHRegion服务器它要维护哪些服务器它要维护哪些HRegionHRegion。当一台新的当一台新的HRegionHRegion服务器登录到服务器登录到HMasterHMaster服务器时,服务器时,HMasterHMaster会会告诉它先等待分配数据。而当一台

27、告诉它先等待分配数据。而当一台HRegionHRegion服务器死机时,服务器死机时,HMasterHMaster会会把它负责的把它负责的HRegionHRegion标记为未分配,然后再把它们分配到其他标记为未分配,然后再把它们分配到其他HRegionHRegion服务器中。服务器中。5.1.3 HBase5.1.3 HBase体系结构体系结构4 4、HRegionHRegion服务器服务器 HRegion HRegion服务器主要负责响应用户服务器主要负责响应用户I/OI/O请求,负责维护分配给自己请求,负责维护分配给自己的的RegionRegion,是,是HBaseHBase中最核心的模块

28、。中最核心的模块。HBaseHBase通常使用通常使用HDFSHDFS作为底层进作为底层进行数据存储,所以行数据存储,所以HRegionHRegion服务器还需要向服务器还需要向HDFSHDFS文件系统中读写数据。文件系统中读写数据。用户通过一系列用户通过一系列HRegionHRegion服务器来获取这些数据,一台机器上面一般服务器来获取这些数据,一台机器上面一般只运行一个只运行一个HRegionHRegion服务器,且每一个区段的服务器,且每一个区段的HRegionHRegion也只会被一个也只会被一个HRegionHRegion服务器维护。服务器维护。HRegionHRegion服务器主要

29、包括两个部分:服务器主要包括两个部分:HRegionHRegion和和HLogHLog。5.1.3 HBase5.1.3 HBase体系结构体系结构5 5、HRegionHRegionHBaseHBase也是使用具有行和列结构的表来存储数据。但是在也是使用具有行和列结构的表来存储数据。但是在HBaseHBase中,当中,当表的大小超过设置值时,表的大小超过设置值时,HBaseHBase会自动地将表划分为不同的区域会自动地将表划分为不同的区域(RegionRegion),每个区域称为一个),每个区域称为一个HRegionHRegion,是,是HBaseHBase集群上分布式存储集群上分布式存储和

30、负载均衡的最小单位。和负载均衡的最小单位。HRegionHRegion由一个或者多个由一个或者多个StoreStore组成,每个组成,每个StoreStore保存一个保存一个Columns FamilyColumns Family(列族)。(列族)。5.1.3 HBase5.1.3 HBase体系结构体系结构6 6、HStoreHStoreHStoreHStore存储是存储是HBaseHBase存储的核心,主要由两部分组成,一部分是存储的核心,主要由两部分组成,一部分是MemStoreMemStore,另一部分是,另一部分是StoreFilesStoreFiles。MemStoreMemSto

31、re是是Sorted Memory Sorted Memory BufferBuffer,用户写入的数据首先会放入,用户写入的数据首先会放入MemStoreMemStore,当,当MemStoreMemStore满了以后,满了以后,里面所积累的数据就会一次性存储到硬盘上,形成一个里面所积累的数据就会一次性存储到硬盘上,形成一个StoreFileStoreFile(底层实现是(底层实现是HFileHFile)。当)。当StoreFileStoreFile文件数量增长到一定阈值,会触文件数量增长到一定阈值,会触发发CompactCompact合并操作,将多个合并操作,将多个StoreFilesSt

32、oreFiles合并成一个合并成一个StoreFileStoreFile,合并,合并过程中会进行版本合并和数据删除。过程中会进行版本合并和数据删除。5.1.3 HBase5.1.3 HBase体系结构体系结构7 7、HFileHFileHFileHFile,HBaseHBase中键值数据的存储格式,是中键值数据的存储格式,是HadoopHadoop的二进制格式文件,的二进制格式文件,实际上实际上StoreFileStoreFile就是对就是对HFileHFile做了轻量级包装,即做了轻量级包装,即StoreFileStoreFile底层就底层就是是HFileHFile。当。当MemStoreM

33、emStore中积累足够多的数据的时候就会将其中的数据中积累足够多的数据的时候就会将其中的数据整个写入到整个写入到HDFSHDFS中的一个新的中的一个新的HFileHFile中。因为中。因为MemStoreMemStore中的数据已经中的数据已经按照键排好序,所以这是一个顺序写的过程。由于顺序写操作避免了按照键排好序,所以这是一个顺序写的过程。由于顺序写操作避免了磁盘大量寻址的过程,所以这一操作非常高效。磁盘大量寻址的过程,所以这一操作非常高效。5.1.3 HBase5.1.3 HBase体系结构体系结构8 8、HLogHLog在分布式系统环境中,无法避免系统出错或者宕机,因此一旦在分布式系统

34、环境中,无法避免系统出错或者宕机,因此一旦HRegionServerHRegionServer意外退出,意外退出,MemStoreMemStore中的内存数据将会丢失,则就需中的内存数据将会丢失,则就需要引入要引入HLogHLog。每个。每个HRegionServerHRegionServer中都有一个中都有一个HLogHLog对象,对象,HLogHLog是一个是一个实现实现Write Ahead LogWrite Ahead Log的类,在每次用户操作写入的类,在每次用户操作写入MemStoreMemStore的同时,的同时,也会写一份数据到也会写一份数据到HLogHLog文件中,文件中,H

35、LogHLog文件定期会滚动出新的,并删除文件定期会滚动出新的,并删除旧的文件(已持久化到旧的文件(已持久化到StoreFileStoreFile中的数据)。中的数据)。5.2.2 HBase Shell5.2.2 HBase Shell命令命令HBaseHBase常用常用shellshell命令如下表命令如下表5-75-7所示所示.hbase shell命令命令 描述描述 create创建表建表alter修改列族(修改列族(column family)模式)模式count统计表中行的数量表中行的数量describe显示表相关的示表相关的详细信息信息delete删除指定除指定对象的象的值(可以

36、(可以为表,行,列表,行,列对应的的值,另外也可以指定,另外也可以指定时间戳的戳的值)deleteall删除指定行的所有元素除指定行的所有元素值disable使表无效使表无效drop删除表除表enable使表有效使表有效exists测试表是否存在表是否存在exit退出退出hbase shellget获取行或取行或单元(元(cell)的)的值incr增加指定表,行或列的增加指定表,行或列的值list列出列出hbase中存在的所有表中存在的所有表put向指向的表向指向的表单元添加元添加值tools列出列出hbase所支持的工具所支持的工具scan通通过对表的表的扫描来描来获取取对用的用的值stat

37、us返回返回hbase集群的状集群的状态信息信息shutdown关关闭hbase集群(与集群(与exit不同)不同)truncate删除和重新除和重新创建一个指定的表建一个指定的表version返回返回hbase版本信息版本信息5.2.3 HBase5.2.3 HBase编程编程如果需要设置如果需要设置HBaseHBase表中多个列族或者导入大量数据,使用表中多个列族或者导入大量数据,使用shellshell则比则比较困难,此时需要编写程序调用较困难,此时需要编写程序调用APIAPI接口。接口。HBaseHBase提供了原生的提供了原生的Java Java APIAPI,JavaJava客户端

38、可直接调用操作客户端可直接调用操作HBaseHBase。JavaJava类类HBaseHBase数据模型数据模型HBaseAdminHBaseAdmin数据库(数据库(DataBaseDataBase)HBaseConfigurationHBaseConfigurationHTableHTable表(表(TableTable)HTableDescriptorHTableDescriptor列族(列族(Column FamilyColumn Family)PutPut列修饰符(列修饰符(Column Column QualifierQualifier)GetGetScannerScanner谢 谢

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作计划

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁