一、hbase应用场景
- 海量数据存储,上百亿行×上百万列,关系型数据库一般最多30个列,单表五百万
- 准实时查询,上百亿行×上百万列情况百毫秒
- 上百万行数据没必要放在hbase
- 举例说明实际业务场景中的应用:交通GPS信息、移动电话信息、金融、电商
二、hbase的特点
- 容量大:hbase单表可以百亿行、百万列,数据矩阵横向和纵向亮给维度所支持的数据两级都非常具有弹性;
- 面向列:hbase是面向列的存储和权限控制,并支持独立检索。列式存储,其数据在表中是按照某列存储的,这样在查询只需要少数几个字段的时候,能大大减少读取的数据量;
- 多版本:hbase每列的数据存储有多个版本version;
- 稀疏性:为空的列并不占用存储空间,表可以设计的非常稀疏;
- 扩展性:底层依赖于HDFS,增加节点;
- 高可靠性:WAL机制保证了数据写入时不会因集群异常而导致写入数据丢失:Replication机制保证了在集群出现严重的问题时,数据不会发生丢失或损坏。而且HBase底层使用HDFS HDFS本身也有备份;
- 高性能:底层LSM数据结构和Rowkey有序排列等架构上的独特设计,使得hbase具有非常高的写入性能。region切分、主键索引和缓存机制使得hbase在海量数据下具备一定的随机读取性能,该性能针对Rowkey的查询能达到毫秒级别。
三、hbase架构体系与设计模型
hbase架构体系
Column Family 列簇
表创建的时候,先建列簇,插入数据时动态增加列
- 一张表不会超过5个列簇
- 每个列簇的列数没有限制
- 列只有插入数据后存在
- 列在列簇中是有序的
四、hbase对比mysql等关系型数据库
- hbase支持列动态增加
- hbase支持数据自动切分
- hbase支持高并发读写
- hbase不支持条件查询