HBase 的命名空间
命名空间是与关系数据库系统中的数据库类似的表的逻辑分组。举例来说,Hbase中有多个表,teacher(老师)、student(学生)、patriarch(家长)这几个表,可以把这几个表变为一个命名空间,这样方便管理。
命名空间的限制
在实际工作中,我们要不要对命名空间做一些限制呢?例如现在命名空间的容量、CPU等。
一个命名空间,会有一些限制,例如一个命名空间只能使用5G的硬盘,那么我们会对命名空间做一些限制,常见的限制如下:
-
配额管理( HBASE-8410 ) - 限制命名空间可以使用的资源数量(即区域,表)。
-
命名空间安全管理( HBASE-9206 ) - 为用户提供另一级别的安全管理。
-
区域服务器组( HBASE-6721 ) - 可以将命名空间/表固定到 RegionServers 的子集上,从而保证粗粒度的隔离级别。
Hbase对命名空间管理命令
一个空间可以被创建,被删除或被更改。一个命名空间下面可以有多个表,用下面的方式表示一个命名空间中的某个表:
<table namespace>:<table qualifier>
命名空间操作举个例子
create_namespace表示创建一个命名空间
# 创建一个命名空间 create_namespace 'my_ns'
list_namespace表示查看一个命名空间:
创建列族
create是在某个命名空间,创建一个表和列簇:
# 在my_ns命名空间创建表my_table create 'my_ns:my_table', 'fam'
- my_ns是前面创建的命名空间
- my_table是表
- fam是列族
如果重复创建会报错哦:
drop_namespace删除空间
drop_namespace用于删除空间,但是为了不删除数据,必须保证空间里面没有表。
# 删除my_ns命名空间 drop_namespace 'my_ns'
# 更改命名空间 alter_namespace 'my_ns', {METHOD => 'set', 'PROPERTY_NAME' => 'PROPERTY_VALUE'}
预定义的名称空间
有两个预定义的特殊命名空间:
- hbase - 系统命名空间,用于包含 HBase 内部表
- default - 没有明确指定名称空间的表将自动落入此名称空间
使用list_namespace显示所有命名空间:
命名空间就像一个数据库一样,里面可以存放表。例如一个小型电商网站可以把整个网站作为一个命名空间。
举个例子,创建一个命名空间为foo,表名为bar,列族:
#namespace=foo and table qualifier=bar create 'foo:bar', 'fam'
注意,如下图,如果foo空间不存在,会报错,这时候,你需要先创建foo空间。
#namespace=default and table qualifier=bar create 'bar', 'fam'