大数据学习之HBase

分布式数据库HBase

HBase简介

HBase是一种高可靠、高性能、面向列、课伸缩的分布式数据库,是谷歌BigTable的开源实现,主要用来存储非结构化和半结构化的松散数据。HBase的目标是处理非常庞大的表,能够通过水平扩展的方式,利用廉价计算机集群处理超过大规模的数据表。
在Hadoop生态体系中,HBase利用Hadoop MapReduce来处理HBase中的海量数据,实现高性能计算;利用Zookeeper作为协同服务,实现稳定服务和失败恢复;使用HDFS作为高可靠的底层存储,利用廉价集群提供海量数据存储能力。当然,HBase也可以直接使用本地文件系统而不用HDFS作为底层数据存储方式,不过为了提高数据可靠性和系统的健壮性,发挥HBase处理大数据量的功能,通常都使用HDFS作为HBase的底层数据存储方式。此外,为了方便在HBase上进行数据处理,Sqoop为HBase提供了高效、便捷的RDBMS数据导入功能,Pig和Hive为HBase提供了高层语言支持。

HBase和传统数据关系数据库的对比分析
1.数据类型:
关系型数据库采用关系模型,具有丰富的数据类型和存储方式,HBase则采用了更加简单的数据模型。它把数据存储为未经解释的字符串,用户可以把不同格式的结构化数据和非结构化数据都序列化成字符串,保存到HBase中,用户需要自己编写程序把字符串解析成不同的数据类型。
2.数据操作:
关系数据库中包含了丰富的操作,比如插入、删除、更新等等,其中会涉及到复杂的多表连接,通常是借助于多个表之间的主外键关联来实现的。HBase操作则不存在复杂的表和表之间的关系,只有简答的插入、查询、删除等。因为HBase在设计上就避免了复杂的表和表之间的关系,通常只采用单表的主键查询,所以无法实现像关系数据库中那样的表和表之间的连接操作。
3.存储模式:
关系数据库是基于行模式存储的,元组或行会被连续的存储在磁盘页中。在读取数据时,需要顺序扫描每个元组,然后从中筛选出查询所需要的的属性。如果每个元组中只有少量属性的值对于查询是有用的,那么急于行模式存储就会浪费许多磁盘控件和内存带宽。HBase是基于列存储的,每个列族都由几个文件保存,不同列族的文件是分离的,这样做的优点是:可以降低I/O开销,支持大量并发用户查询,因为仅需要处理能够回答查询的列就可以,而不需要处理与查询无关的大量数据行;而且同一个列族中的数据会一起进行压缩,由于同一列族内的数据相似度较高,因此可以获得较高的数据压缩比。
4.数据索引:
关系数据库通常可以针对不同列构建复杂的多个索引,以提高数据访问性能。而HBase只有一个索引——行键,通过巧妙的设计,HBase中的所有访问方法,通过行键进行访问或者扫描,使得整个系统不会慢下来。由于HBase位于Hadoop框架上,因此可以使用hadoop MapReduce来快读、高效的生成索引表。
5.数据维护
在关系数据库中,更新操作会用更新后的值去替换原来的值,旧的值被替换后就不存在了。但是在HBase中执行更新操作时,并不会删除数据的旧版本,而是生成一个新的本本,旧的版本仍然保留。
6.可伸缩性
关系数据库很难实现横向扩展,纵向扩展的空间也比较有限。相反,HBase就是为了实现灵活的水平扩展而开发的,能够轻易的通过在集群中增加或者减少硬件数量来实现性能的伸缩。

但是,相对于关系数据库来说,HBase也有自身的局限性,比如HBase不支持事务,因此,无法实现跨行的原子性。

HBase数据模型

1.数据模型概述:
HBase是一个稀疏、多维度、排序的映射表,这张表的索引是行键、列族、列限定符和时间戳。每个值是一个未经解释的字符串,没有数据类型。用户在表中存储数据,每一行都有一个可排序的行键和任意多的列。表在水平方向由一个或者多个列族组成,一个列族中可以包含任意多个列,同一列族里面的数据是存储在一起的。列族支持动态扩展,可以很轻松的添加一个列族或列,无需预先定义列的数量以及类型,所有列均以字符串的形式存储,用户需要自行进行数据类型转换。由于同一张表里面的每一行数据都可以有截然不同的列,因此,对于整个映射表的每行数据而言,有些列的值就是空的,所以说HBase是稀疏的。
在HBase中执行更新操作时,并不会删除数据旧的版本,而是生成一个新的版本,旧有的版本仍然保留,HBase可以对允许保留的版本的数量进行设置。客户端可以选择获取距离某个时间最近的版本,或者一次获取所有的版本。如果在查询的时候不提供时间戳,那么会返回距离现在最近的那一个版本的数据,因为在存储的时候,数据会按照时间戳排序。HBase提供了两种数据版本回收方式:一是保存数据的最后n个版本,而是保存最近一段时间内的版本。

2.数据模型的相关概念:
HBase实际上就是一个稀疏、多维、持久化存储的映射表,它采用行键(Row Key)、列族(Column Family)、列限定符(Column Qualifier)和时间戳(Timestamp)进行索引,每个值都是未经解释的字节数组byte[]。下面具体介绍HBase数据模型的相关概念。
1)表
HBase采用表来组织数据,表有行和列组成,列划分为若干个列族。
2)行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值