HBase简介
HBase的三个特点
- 大:一张表可以存储上亿行,上百万列
- 面向列:面向列族的存储和权限控制,列族独立检索
- 稀疏:对于为空的列,并不占用存储空间,表可以设计得非常稀疏
逻辑结构
逻辑上,HBase的数据同关系型数据库类似,数据存储在表中有行有列。但实际上HBase的底层物理存储结构是key-value的形式。
-
列
列是可以动态增加的
竖向切割的每一个点叫做列族
-
Row key
行键(Row key)是有序的,是根据字典序来排序
要求行键(Row key)唯一
-
Region
横向切割的每一个点叫做Region,Region是一张表的切片
-
store
存储切割出来的数据
物理结构
- TimeStamp:时间戳
- Type:操作类型
数据模型
-
Name Space
命名空间,类似于关系型数据库的database概念,每个命名空间下有多个表。HBase有两个自带的命名空间,分别是hbase和default,hbase存放的是HBase内置表,default表是用户默认使用的命名空间。
-
Region
类似于关系型数据库的table概念。不同的是,Hbase定义表时只需要声明列族即可。往HBase写入数据时,字段可以动态、按需指定。因此,和关系型数据库相比,HBase能够轻松应对字段变更的场景。
-
Row
HBase表中的每行数据都由一个RowKey和多个Column(列)组成,数据是按照RowKey的字典顺序存储的,并且查询数据时只能根据RowKey进行检索,所以RowKey的设计十分重要。
-
Column
HBase中的每个列都由Column Family(列族)和Column Qualifier(列限字符)进行限定。在建表时只需指定列族,无需指定列的数据类型。
-
Time Stamp(时间戳)
用于标识数据的不同版本,每条数据写入时,如果不指定时间戳,系统会自动为其加入该字段,其值是写入HBase的时间。
-
Cell
由{rowkey,column Family: column Qualifier,time Stamp}来确定唯一单元。Cell中的数据是没有数据类型的,全部是字节码形式存储。byte[]
HBase基础架构
-
RegionServer的作用
RegionServer是Region的管理者,实现类为HRegionServer,DML
对于数据的操作:get、put、delete
对于Region的操作: splitRegion(切分),compactRegion(合并)
-
Master的作用
Table:create,delete,alter,DDL管理者,管理整个表的增删改查以及当前这个表归谁维护
RegionServer:分配regions到每个RegionServer,监控每个RegionServer的状态
Master主要管理表结构上
-
Zookeeper的作用
HBase通过Zookeeper来做master的高可用、RegionServer的监控、元数据的入口以及集群配置的维护等工作。