HBase 简介
1.Hbase 起源
HBase 是一个开源的非关系型分布式数据库,它参考了谷歌的 BigTable 建模,实
现的编程语言为 Java。它是 Apache 软件基金会的 Hadoop 项目的一部分,运行
于 HDFS 文件系统之上,为 Hadoop 提供类似于 BigTable 规模的服务。因此,它
可以容错地存储海量稀疏的数据。
HBase 是一个高可靠、高性能、面向列、可伸缩的分布式数据库,是谷歌 BigTable
的开源实现,主要用来存储非结构化和半结构化的松散数据。HBase 的目标是处
理非常庞大的表,可以通过水平扩展的方式,利用廉价计算机集群处理由超过
10 亿行数据和数百万列元素组成的数据表。
1.1 关系数据库已经流行很多年,并且 Hadoop 已经有了 HDFS 和 MapReduce,为
什么需要 HBase?
Hadoop
可 以 很 好 地 解 决 大 规 模 数 据 的 离 线 批 量 处 理 问 题 , 但 是 , 受 限 于
HadoopMapReduce
编程框架的高延迟数据处理机制,使得
Hadoop
无法满足大规模
数据实时处理应用的需求。
HDFS
面向批量访问模式,不是随机访问模式。
传统的通用关系型数据库无法应对在数据规模剧增时导致的系统扩展性和性能问题
(分库分表也不能很好解决)。
传统关系数据库在数据结构变化时一般需要停机维护;空列浪费存储空间。
1.2HBase 与传统的关系数据库的区别主要体现在以下几个方面:
1
、数据类型:关系数据库采用关系模型,具有丰富的数据类型和存储方式,
HBase
则采用了更加简单的数据模型,它把数据存储为未经解释的字符串。
2
、数据操作:关系数据库中包含了丰富的操作,其中会涉及复杂的多表连接。
HBase
操作则不存在复杂的表与表之间的关系,只有简单的插入、查询、删除、清空等,
因为
HBase
在设计上就避免了复杂的表和表之间的关系。
3
、存储模式:关系数据库是基于行模式存储的。
HBase
是基于列存储的,每个列族
都由几个文件保存,不同列族的文件是分离的。
4
、数据索引:关系数据库通常可以针对不同列构建复杂的多个索引,以提高数据访
问性能。
HBase
只有一个索引
——
行键,通过巧妙的设计,
HBase
中的所有访问方法,
或者通过行键访问,或者通过行键扫描,从而使得整个系统不会慢下来。
5
、数据维护:在关系数据库中,更新操作会用最新的当前值去替换记录中原来的旧
值,旧值被覆盖后就不会存在。而在
HBase
中执行更新操作时,并不会删除数据旧
的版本,而是生成一个新的版本,旧有的版本仍然保留。
6
、可伸缩性:关系数据库很难实现横向扩展,纵向扩展的空间也比较有限。相反,
HBase
和
BigTable
这些分布式数据库就是为了实现灵活的水平扩展而开发的,能够
轻易地通过在集群中增加或者减少硬件数量来实现性能的伸缩。
评论