我们都是到HBase里面有工作区间一说,这个工作区间也就相当于我们关系数据库中的数据库,也相当于我们Phoenix中的Schema。这里主要讲Phoenix和HBase的namespace之间的爱恨情仇的故事。

先配置HBase开启与Phoenix的schema之间的转换

1
2
3
4
5
6
7
8
<property>
<name>phoenix.schema.isNamespaceMappingEnabled</name>
<value>true</value>
</property>
<property>
<name>phoenix.schema.mapSystemTablesToNamespace</name>
<value>true</value>
</property>

在HBase中namespace相关操作

1
2
3
4
5
6
7
8
9
10
-- 创建namespace
create_namespace 'CI123'
-- 删除namespace
drop_namespace 'CI123'
-- 查看namespace
list_namespace
-- 在namespace下创建表
create 'CI123:table_name', 'family1'
-- 查看namespace下的表
list_namespace_tables 'CI123'

授权

具备Create权限的namespace Admin可以对表创建和删除、生成和恢复快照
具备Admin权限的namespace Admin可以对表splits或major compactions
首先,我们需要确定一点,就是我们的hbase-site.xml中有如下的配置,保证我们的HBase已经开启了授权

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!-- HBase开启权限-->
<property>
     <name>hbase.security.authorization</name>
     <value>true</value>
   </property>
   <property>
     <name>hbase.coprocessor.master.classes</name>
     <value>org.apache.hadoop.hbase.security.access.AccessController</value>
   </property>
   <property>
     <name>hbase.coprocessor.region.classes</name>
     <value>org.apache.hadoop.hbase.security.token.TokenProvider,org.apache.hadoop.hbase.security.access.AccessController</value>
   </property>
   <property>
     <name>hbase.superuser</name>
     <value>corp,root,Smile-Sun,hbase</value>
   </property>
1
2
3
4
5
-- 对用户 'corp' 赋予 write 权限
-- 权限含有: 读(Read) R / 写(Write) W / 执行(Execute) X / 创建(Create) C / 管理(Admin) A
grant 'corp' 'W' '@CI123'
-- 回收 用户 'corp' 权限
revoke 'corp' 'W' '@CI123'