HBase简介:
分布式数据库
是构建在HDFS上的分布式列存储数据库(Mysql,Oracle是行数据库),是一个高可靠性,高性能,面向列。可伸缩的分布式存储系统

列式存储允许用户存储海量的数据到相同表中,而在传统数据库中,海量数据需要被切分为多个表进行存储
行键 不宜过长,否则会占用大量的存储空间降低检索效率 尽量均匀分布,避免产生热点问题 还有唯一性

列簇是在创建表的时候建立的,不会再变,但是列是可以动态添加的
但是也不能有太多列簇,因为跨列簇访问是非常低效的

数据模型

 

HBase物理模型:

每个column family存储在HDFS的一个单独文件里
键值和版本在每个列簇里都有一份
空值不保存占位符都没有
在行方向上按照键值字典序排列
在行的方向上分割为多个region,从而实现分布存储
最开始只有一个region,随着记录数不断增加,会逐渐分裂为多个region
一个region由【startkey,endkey】表示,不同的region会被Master分配给不同的Regionserver

 

region虽然是分布式存储的最小单元,但并不是存储的最小单元
region由一个或者多个store组成,每个store保存一个columns family
每个store又由一个memstore和0至多个storefile组成
memstore存储在内存中,storefile存在HDFS中

 

HBase系统架构:

 

 

 

 附自己做的笔记: