HBase的原型是Google的BigTable论文,目前作为Hadoop的子项目来开发维护,用于支持结构化的数据存储。
HBase是一个高可靠、高性能、面向列、可伸缩的分布式存储系统,利用HBASE技术可在廉价PC Server上搭建起大规模结构化存储集群。
HBase常被用来存放一些结构简单,但数据量非常大的数据(通常在TB级别以上),如历史订单记录,日志数据,监控Metris数据等等,HBase提供了简单的基于Key值的快速查询能力。
HBase是Google Bigtable的开源实现,它有很多不同之处,比如:
- Google Bigtable利用GFS作为其文件存储系统,HBase利用Hadoop HDFS作为其文件存储系统;
- Google Bigtable运行MapReduce来处理Bigtable中的海量数据,HBase同样利用Hadoop MapReduce来处理HBase中的海量数据;
- Google Bigtable利用Chubby作为协同服务,HBase利用Zookeeper作为对应。
一句话:Hbase构建在HDFS之上,它利用Hadoop HDFS作为其文件存储系统,利用Hadoop MapReduce来处理HBase中的海量数据,利用Zookeeper作为协同服务。
HBase特点 海量存储Hbase适合存储PB级别的海量数据,一个表可以有数十亿行,上百万列。在PB级别的数据以及采用廉价PC存储的情况下,能在几十到百毫秒内返回数据。这与Hbase的极易扩展性息息相关。正式因为Hbase良好的扩展性,才为海量数据的存储提供了便利。
列式存储这里的列式存储其实说的是列族存储,Hbase是根据列族来存储数据的,列族独立索引。列族下面可以有非常多的列,列族在创建表的时候就必须指定。
极易扩展Hbase的扩展性主要体现在以下两个方面:
- 一个是基于上层处理能力(RegionServer)的扩展
- 一个是基于存储的扩展(HDFS)
通过横向添加RegionSever的机器,进行水平扩展,提升Hbase上层的处理能力,提升Hbsae服务更多Region的能力。 备注:RegionServer的作用是管理region、承接业务的访问,通过横向添加Datanode的机器,进行存储层扩容,提升Hbase的数据存储能力和提升读写能力。
高并发由于目前大部分使用Hbase的架构,都是采用的廉价PC,因此单个IO的延迟其实并不小,一般在几十到上百ms之间。 这里说的高并发,主要是在并发的情况下,Hbase的单个IO延迟下降并不多。能获得高并发、低延迟的服务。
稀疏值为空的列不占存储空间,表可以非常稀疏,但实际存储时,能进行压缩。 稀疏主要指Hbase列的灵活性:在列族中,可以指定任意多的列,在列数据为空的情况下,是不会占用存储空间的。
数据类型单一数据无类型,所有数据以字节数据形式存储。 Hbase中的数据类型都是字符串(string)
无模式每行都有一个可排序的主键和任意多的列,列可以根据需要动态增加,同一张表中不同的行可以有截然不同的列。 不像关系型数据库有严格的Scheme,HBase每行可以有任意多的列,列可以动态增加,不同行可以有不同的列,列的类型没有限制。
面向列族HBase提供面向列族的存储和权限控制,支持列族独立查询。
数据多版本HBase利用时间戳来标识版本。