1
头图

HBase的逻辑存储结构主要包括:命名空间(NameSpace)、表(Table)和列族(Column Family)。视频讲解如下:
https://www.bilibili.com/video/BV1T3BrYcE8a/?aid=113529894410...

下面分别进行介绍。

一、 命名空间(NameSpace)

HBase的命名空间相当于Oracle和MySQL中的数据库,它是对表的逻辑划分。不同的HBase命名空间类似于关系型数据库中的不同的数据库。利用命名空间的逻辑管理功能,可以实现在多租户场景下做到更好的资源和数据隔离。在系统表hbase:namespace中保存了的所有的命名空间信息。视频讲解如下:
https://www.bilibili.com/video/BV1nvBsY6EhX/?aid=113535631825...

通过下面的语句可以管理和操作HBase的命名空间。

(1)查询系统表hbase:namespace

> scan 'hbase:namespace'

# 输出的信息如下:
ROW        COLUMN+CELL    
 default    column=info:d, timestamp=1631601267690, value=\x0A\x07default
 hbase        column=info:d, timestamp=1631601267862, value=\x0A\x05hbase
2 row(s)
提示:这里可以看出在默认的情况下,HBase存在两个命名空间,即:default和hbase。如果没有指定命名空间,新表将创建在default命名空间下;而hbase命名空间是系统命名空间,一般不用于普通操作。

(2)查看命名空间也可以通过执行list_namespace命令,例如:

> list_namespace

# 输出的信息如下:
NAMESPACE                   
default                     
hbase                       
2 row(s)

(3)创建一个新的命名空间mydemo,并在mydemo命名空间中创建一张新表。

> create_namespace 'mydemo'
> create 'mydemo:table1','info'

(4)查看命名空间mydemo中的表。

> list_namespace_tables 'mydemo'

# 输出的信息如下:
TABLE                     
table1                    
1 row(s)

二、 表(Table)

HBase的表对应于关系型数据库中的一张表,HBase以表为单位组织数据,表由多行组成。每一行由一个RowKey和多个列族组成。Rowkey用于唯一标识一条记录。不同行的Rowkey可以重复,但相同的Rowkey表示同一条记录。为了加快查询数据的速度,HBase表中的所有行都按照RowKey的字典顺序进行排列。

视频讲解如下:
https://www.bilibili.com/video/BV1m5zKYNEQF/?aid=113543902928...

表在行的方向上分隔为多个Region,而Region是HBase中分布式存储和负载均衡的最小单元。因此在同一个Region Server上可能保存了不同的Region,但一个Region只会属于一个Region Server。Region按大小分隔,而表中每一行只能属于一个Region。随着数据不断插入表,会使得Region不断增大。当Region中的某个列族达到一个阈值时就会分成两个新的Region,分裂后每一个新的Region大小是原来Region的一半。

三、 列族(Column Family)

由于表中的一行上可能存在多个列族,因此Region可以被进一步地划分。每一个Region有一个或多个Store组成,HBase会把一起访问的数据放在一个Store里面,即一行上有几个列族,也就有几个Store。一个Store由一个MemStore和多个Store File组成。

视频讲解如下:
https://www.bilibili.com/video/BV15hz3YfEfX/?aid=113549019976...

列族中包含列,列不需要事先创建。当插入数据时没有该列,HBase会自动创建列;列又是由单元格组成。

提示:MemStore是HBase的写缓存,用于保存修改的数据。当MemStore的大小达到一个阀值时,HBase会有一个线程来将MemStore中的数据刷新到HBase的数据文件中生成一个快照。这个快照就是Store File。

赵渝强老师
36 声望18 粉丝

20年以上的IT行业从业经历,清华大学计算机软件工程专业毕业,京东大学大数据学院院长,Oracle中国有限公司高级技术顾问;曾在BEA、甲骨文、摩托罗拉等世界500强公司担任高级软件架构师或咨询顾问等要职,精通大...