目录
H代表HDFS,Base代表DataBase,以HDFS为基础的分布式非关系型(NoSQL)数据库。
NoSQL数据库是以K,V来存储的,读取效率比关系型数据库更高
以JSON数据为例
逻辑结构模型
存储数据稀疏,数据存储多维,不同的行具有不同的列,数据整体有序,
RowKey:按照RowKey的字典序排列,RowKey为Byte数组。
store:在纵向切分,按照列族切分,切分完称为store,按照列族切分为store,用于底层存储到不同文件中,将一份数据存到多个文件夹中。
物理存储结构模型
HDFS上的数据不能修改,只能删除,重写,追加写,但是HBase作为数据库要有修改数据的功能,如何在HDFS的基础上实现修改数据的功能呢?
TimeStamp(时间戳):
采用时间戳的方式,同一个key 对应多条数据,时间戳最大的那个就是最新的数据。
Type:
type用来标记数据是否被删除,如果有两个数据,时间戳小的为delete,大的为put,说明修改了新的数据,如果大的为delete,那么说明该数据被删除了。
NameSpace
命名空间,类似于关系数据库中的database的概念,HBase自带hbase和default两个命名空间,hbase中存放HBase内置的表,default是用户默认使用的命名空间
Table
类似于关系型数据库的表概念,但HBase定义时只需要声明列族,列可以动态的按需指定。
Row
每一行数据都由RowKey和Column组成,查询数据只能根据RowKey查询,所以RowKey的设计很重要
Column
每个列由列族(column family)和列限定符限制,建表时只需指明列族,列限定符不需要预先定义。
TimeStamp
每条数据写入时系统自动加上该字段,为写入HBase的时间
Cell
针对底层存储数据的一行,由rowkey,column qualifier,timestamp唯一确定的单元,cell中的数组都是由字节码形式存储。
HBase是分布式的,分为两种角色,master和region server
master
1.管理元数据表格habse:meta,接收用户对表格创建修改删除的命令并执行
2.监视region是否需要负载均衡,故障转移和region拆分
负载均衡
监控region分布在regionServer上是否均衡,由参数hbase.balancer.period控制周期时间,默认为5分钟
故障转移
一个region server负责管理几个region,通过region server对region的数据进行增删改查,如果某个region server没了,master需要及时发现并将管理权交给其他regionserver。
region server
region server将进程信息注册到zookeeper里面,master读取注册信息,从而实现对region server的管理,负责对cell数据的处理,如写数据put,查询数据get,拆分合并region等操作。
backup master
backup master是master的备用,如果master没了,可以顶替它进行工作。
masterProcWAL master 预写日志处理器
把master需要执行的任务记录到预写日志WAL中,如果master宕机,让backupmaster读取日志继续干
Zookeeper
HBase通过Zookeeper来做master的高可用,记录regionServer的部署信息,存储meta表的位置信息。