hbase shell 操作 、表空间、授权

版权声明:本文为博主原创文章,转载请 注上 http://blog.csdn.net/wzhwei1987 https://blog.csdn.net/wzhwei1987/article/details/84064016

1、进入shell界面:


hbase shell

2、namespace


HBase中没有database的概念,这里的namespace命名空间指对一组表的逻辑分组,类似RDBMS中的database;
HBase系统默认定义了两个缺省的namespace
hbase:系统内建表,包括namespace和meta表
default:用户建表时未指定namespace的表都创建在此

1、创建namespace
hbase>create_namespace 'test_ns'
2、列出所有namespace
hbase>list_namespace
3、查看namespace
hbase>describe_namespace 'test_ns'
4、在namespace下创建表
hbase>create 'test_ns:testtable', 'fm1'
5、查看namespace下的表
hbase>list_namespace_tables 'test_ns'
6、删除namespace  ----必须空的namespace才能删除  要删除掉里面的表
hbase>disable 'test_ns:testtable'
hbase>drop 'test_ns:testtable'
hbase>drop_namespace 'test_ns'    

3、table DML


1、创建表 
hbase>create 't_demo_tbl','f1','f2','f3'                   #-------t_demo_tbl是表名,f1,f2,f3是列族名
2、查看表的结构:
hbase>describe 't_demo_tbl'
3、禁用,启用表
hbase>disable 't_demo_tbl'
hbase>enable 't_demo_tbl'
4、查看表结构是否启用【允许修改】 因为启用的表不允许修改:
hbase>is_enabled 't_demo_tbl'
5、增加一个列族:
hbase>disable 't_demo_tbl'
hbase>alter 't_demo_tbl', NAME=>'f1', VERSIONS=>3
hbase>enable 't_demo_tbl'
6、删除某个列族: 
hbase>disable 't_demo_tbl'
hbase>alter 't_demo_tbl', NAME=>'f1', METHOD=>'delete'         #--------注意大小写(简写:alter 't_demo_tbl', 'delete'=>'f1')
hbase>enable 't_demo_tbl'

7、查看所有的表
hbase>list
8、查看某一表是否存在:
hbase>exists 't_demo_tbl'

9、清空表:
hbase>truncate 't_demo_tbl'
10、删除某张表:
hbase>disable 't_demo_tbl'
hbase>drop 't_demo_tbl'

4、table DDL


1、向表中插入数据:
hbase>put 't_demo_tbl', 'r1', 'f1:c1', 'value'           #--------列族的列可以不存在,修改数据也是put,只需行健[rowkey]和列相同即可
2、删除某行数据的列[值]:
hbase>delete 't_demo_tbl', 'r1', 'c1', 'ts1'       #--------删除t_demo_tbl表,行健为r1的c1列中,时间戳为ts1的值,如果不指定ts1就删除所有列值[默认保持三个版本]
3、删除某行数据:
hbase>deleteall 't_demo_tbl', 'r1'
4、获取某个行健的所有列族的列值:
hbase>get 't_demo_tbl', 'r1'
5、获取某个行健的所有某个列族的列值:
hbase>get 't_demo_tbl', 'r1','f1'
6、获取某个行健的某两个列族的列值:
hbase>get 't_demo_tbl', 'r1','f1','f2'
7、获取某个行健的某个列族的某个列值:
hbase>get 't_demo_tbl', 'r1', 'f1:c1'
8、获取某个表的所有行健值:
hbase>scan 't_demo_tbl'
9、获取某个表的前3行:
hbase>scan 't_demo_tbl', {LIMIT=>3}
10、获取某个表的从指定位置开始的行:
hbase>scan 't_demo_tbl', {STARTROW=>'rowKey', LIMIT=>3}
11、获取某个表的指定列的所有行数据:
hbase>scan 'heroes', {COLUMNS =>'f1:c1'}
12、统计表的行数:
hbase>count 't_demo_tbl'


5、shell 脚本执行方式

1、可以直接将语句写入文件test.hbaseshell,然后执行文件:
hbase>hbase shell test.hbaseshell 

6、授权

Apache HBase从0.98.0, 0.95.2两个版本开始支持namespace级别的授权操作

包括以下5种权限,
Read(R) 允许读取权限
Write(W) 允许写入权限
Execute(X) 允许执行权限
Create(C) 允许建表、删表权限
Admin(A) 允许管理操作,如balance、split、snapshot等


1、给 user_1 用户授权全局的CA   grant <user>, <permissions> [, <@namespace> [, <table> [, <column family> [, <column qualifier>]]]
hbase>grant 'user_1','CA'

2、回收user_1用户全局的CA   revoke <user> [, <@namespace> [, <table> [, <column family> [, <column qualifier>]]]]
hbase>revoke 'user_1','CA'

3、给user_1用户namespace权限
hbase>grant 'user_1','RWXCA','@t_ns'

4、给user_1用户table权限
hbase>grant 'user_1','RWXCA','TABLE_A'

5、查看所有用户权限
hbase>user_permission

6、查看某个表的权限
hbase>user_permission 'TABLE_A'

7、查看某个namespace的权限
hbase>user_permission '@t_ns'

8、在HBase中启用授权机制
hbase-site.xml
<property>
  <name>hbase.security.authorization</name>
  <value>true</value>
</property>
<property>
  <name>hbase.coprocessor.region.classes</name>
  <value>org.apache.hadoop.hbase.security.access.AccessController, org.apache.hadoop.hbase.security.token.TokenProvider</value>
</property>
<property>
  <name>hbase.coprocessor.master.classes</name>
  <value>org.apache.hadoop.hbase.security.access.AccessController</value>
</property>
配置完成后需要重启HBase集群

猜你喜欢

转载自blog.csdn.net/wzhwei1987/article/details/84064016
今日推荐