HBase底层原理

HBase底层原理

系统架构:
HBase底层原理
Client:
1 包含访问hbase的接口,client维护着一些cache来加快对hbase的访问,比如regione的位置信息。

Zookeeper:
1、zk的选举机制 保证任何时候,集群中只有一个master
2、 实时监控Region Server的状态,将Region server的上线和下线信息实时通知给Master
3、 存贮所有Region的寻址入口
4 、存储Hbase的schema,包括有哪些table,每个table有哪些column family
Master职责
1 为Region server分配region
2 负责region server的负载均衡
3 发现失效的region server并重新分配其上的region
4 处理schema更新请求
Region Server职责
1 Region server维护Master分配给它的region,处理对这些region的IO请求
2 Region server负责切分在运行过程中变得过大的region
HBase的表数据模型
HBase底层原理
Row Key(hbase最重要的设计)
访问hbase数据的方式(作用在rowkey):
1 通过单个row key访问、
2 通过row key的start key, endkey
3 全表扫描

rowkey 的要求:
最大长度是 64KB
Hbase会对表中的数据按照rowkey排序(字典顺序)

字典序对int排序的结果是:
1,10,100,11,12,13,14,15,16,17,18,19,2,20,21,…,9,91,92,93,94,95,96,97,98,99。要保持整形的自然序,行键必须用0作左填充。

列族Column Family
列族是表的schema(表名称-列族)的一部分,而列不是。
每个列,都归属与某个列族
列Column
列族下面的具体列,属于某一个ColumnFamily
时间戳
时间戳可以由hbase(在数据写入时自动 )赋值,工程师也可以自己设置时间戳。
不同版本的数据按照时间倒序排序。
hbase提供了两种数据版本回收方式:
1 保存数据的最后n个版本
2 保存最近一段时间内的版本
hbase确定一个数据
{row key, column( = +