一、启动、关闭HBase
启动hbase start-hbase.sh
关闭habse stop-hbase.sh
二、基本概念
namespace:命名空间
table: 表
rowKey:行健
用于唯一标识一行数据,一行下有多列,行健的设计直接关系到查询的效率。
columnFamily:列族
表下可以有多个列族,但不建议设置多个列族,HBase建议设计长窄型的表而不是短宽型。
qualifier:列
一个列族下可以有多列,一个表中的列可以是不对齐的,但是这样效率不高,同一张表中的列最好是相同的。
row:行
多列数据组成一行,一行中有多个qualifier。
cell:一列下的一个单元格
一个列下可以有多个单元格,根据版本号区分,默认每次读取最新版本的数据,cell下的存储是数据本身。
三、命名空间
HBase默认定义了两个命名空间
hbase:存放系统内建表,包括namespace表和meta表
default:用户建表时未指定namespace的表都创建在此
- 列出所有命名空间
list_namespace - 新建命名空间
create_namespace ‘my’ - 删除命名空间
drop_namespace ‘my’ - 查看命名空间
describe_namespace ‘my’ - 查看命名空间下的表
list_namespace_tables ‘my’
四、表操作
hbase表(my:t_test)示例
rowkey | info | edu | |
name | age | level | |
1001 | 张三 | 17 | primary |
1002 | 李四 | 18 | junior |
- 创建表
create ‘my:t_test’,‘info’,‘edu’ - 修改表结构
alter ‘my:t_test’,NAME ‘work’ (添加新列族)
alter ‘my:t_test’,Name=‘work’,METHOD=‘delete’ (删除列族)
disable ‘t_test’ (使表无效)
drop ‘my:t_test’ (删除表) - 添加数据 (指明表名、行键、列族名、列名、值)
put ‘my:t_test’,‘1001’,‘info:name’,‘张三’
put ‘my:t_test’,‘1001’,‘info:age’,‘17’
put ‘my:t_test’,‘1002’,‘info:name’,‘李四’ - 查询数据
scan ‘my:t_test’ (扫描所有)
scan ‘my:t_test’,{LIMIT=>3} (扫描前3行)
get ‘my:t_test’,‘1001’,‘info’ (查询指定列族的一行数据)
get ‘my:t_test’,‘1001’,‘info:name’ (查询指定列族和列名的一行数据) - 更新数据 *(覆盖)
put ‘my:t_test’,‘1001’,‘info:name’,‘王五’ - 删除数据
deleteall ‘my:t_test’,‘1001’ (删除一行)
delete ‘my:t_test’,‘1001’,‘info:name’,‘张三’ (删除单元格数据)
truncate ‘my:t_test’ (清空表数据) - 其它
exists ‘my:t_test’ (检查表是否存在)
desc ‘my:t_test’ (查看表信息)
五、授权
1、HBase表访问控制的5种权限
Read(R) 允许对某个scope有读取权限
Write (W) 允许对某个scope有写入权限
Execute (X) 允许对某个scope有执行权限
Create(C)允许对某个scope有建表、删表权限
Admin (A) 允许对某个scope做管理操作,如balance、split、snapshot等
2、Scope
- superuser 超级用户,一般为hbase用户,具备所有的权限
- global 全局权限,针对所有的hbase表都有权限
- namespace namespace下的所有表权限都有权限
- table 表级别权限
- columnFamily列族级别权限
- cell 单元格级别权限
3、访问控制相关的命令
grant 授权
revoke 回收权限
user_permission 查询权限
4、用户授权
- 赋予用户stu对命名空间“my”及下表的操作权限
grant ‘stu’,‘RWXCA’,’@my’ - 赋予用户stu对表“my:t_test”的只读权限
grant ‘stu’,‘R’,‘my:t_test’