HBase来源于 Fay Chang 所撰写的Google论文《Bigtable:一个结构化数据(半结构化)的分布式存储系统》。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目,用于存储海量的结构化或者半结构,非结构化的数据。
HBase是一个高可靠性、高性能(快)、面向列、可伸缩的分布式数据库系统,利用HBASE技术可在廉价PC Server上搭建起大规模结构化和非结构化数据存储集群。
高可靠性 , 分布式的数据库 , 存储的数据是安全的, 集群对外服务是可靠高性能, 处理数据的速度,效率, 分布式的数据库就可以利用集群中所有机器的运算资源处理数据可伸缩性 从存储能力和运算能力处理 ,可以通过添加节点来扩展存储容量和添加运算资源面向列 : 在hbase底层存储的所有的数据都是以key/value组成的字节数据1 大:一个表可以有上几十亿行,上百万列
2 面向列:面向列(族)的存储和权限控制,列(族)独立检索。
3 可以高效应对稀疏数据表:对于为空(null)的列,并不占用存储空间,因此,表可以设计的非常稀疏。
1)海量存储
Hbase适合存储PB级别的海量数据,在PB级别的数据以及采用廉价PC存储的情况下,能在几十到百毫秒内返回数据。这与Hbase的极易扩展性息息相关。正式因为Hbase良好的扩展性,才为海量数据的存储提供了便利。
2)列式存储
这里的列式存储其实说的是列族存储,Hbase是根据列族来存储数据的。列族下面可以有非常多的列,列族在创建表的时候就必须指定。
3)极易扩展
Hbase的扩展性主要体现在两个方面,一个是基于上层处理能力(RegionServer)的扩展,一个是基于存储的扩展(HDFS)。 通过横向添加RegionSever的机器,进行水平扩展,提升Hbase上层的处理能力,提升Hbsae服务更多Region的能力。
备注:RegionServer的作用是管理region、承接业务的访问,这个后面会详细的介绍通过横向添加Datanode的机器,进行存储层扩容,提升Hbase的数据存储能力和提升后端存储的读写能力。
高并发集群中对外服务的节点叫RegionServer(存储表的部分范围数据)
并发查询的时候 不同的机器节点对外服务 支持高并发
由于目前大部分使用Hbase的架构,都是采用的廉价PC,因此单个IO的延迟其实并不小,一般在几十到上百ms之间。这里说的高并发,主要是在并发的情况下,Hbase的单个IO延迟下降并不多。能获得高并发、低延迟的服务。
5)稀疏
稀疏主要是针对Hbase列的灵活性,在列族中,你可以指定任意多的列,在列数据为空的情况下,是不会占用存储空间的。
HBase擅长于存储结构简单的海量数据但索引能力有限,而Oracle等传统关系型数据库(RDBMS)能够提供丰富的查询能力,但却疲于应对TB级别的海量数据存储,HBase对传统的RDBMS并不是取代关系,而是一种补充。
不适合使用
需要数据分析,比如报表(rowkey) 对sql支持不好
单表数据不超过千万(200万)
适合使用HBASE
单表数据超过千万 ,并发量还很高