环境配置
下载安装Hbase:
docker pull harisekhon/hbase:1.3
启动
docker run -d -h myhbase -p 2181:2181 -p 8080:8080 -p 8085:8085 -p 9090:9090 -p 9095:9095 -p 16000:16000 -p 16010:16010 -p 16201:16201 -p 16301:16301 --name hbase1.3 harisekhon/hbase:1.3
-p : 指定主机的端口 16010映射到宿主机上(容器)的开放端口 16010
-P :主机随机分配端口与宿主机上的端口进行映射
注意:hbase60010端口无法访问web页面,web端访问的接口变更为16010
sudo vi /etc/hosts
添加 docker IP hostname
http://docker IP:宿主机上(容器)的开放端口 16010对应的指定主机的端口/master-status
例:http://localhost:16010/master-status
命令行操作
docker exec -it hbase001 bash
然后执行 : hbase shell
官方文档:shell篇 https://hbase.apache.org/book.html#shell
官方文档:数据模型篇: https://hbase.apache.org/book.html#conceptual.view
DDL 操作
命名空间
#Create a namespace
create_namespace 'ns1'
创建表
#create order in ns1 namespace
create 'ns1:user', 'name','age','sex'
create 'ns1:log', 'id','time','sex'
获取表的描述
describe'user'
列出所有表
list
删除一个列族
alter'user',{NAME=>'age',METHOD=>'delete'}
删除表
首先把表设置为 disable。
disable'表名'
drop'表名'
DML 操作
插入数据
给 user 表的 rw1 行分别插入 3 个列。
put'ns1:user','rw1','name','wuqh'
put'ns1:user','rw1','age','20'
put'ns1:user','rw1','sex','boy'
获取数据
获取 user 表的 rw1 行的所有数据。
hbase(main):037:0> get 'ns1:user','rw1'
COLUMN CELL
age: timestamp=1563083718436, value=20
name: timestamp=1563083680020, value=wuqh
sex: timestamp=1563083733940, value=boy
1 row(s) in 0.0460 seconds
获取 user 表的 rw1 行 name 列族的所有数据。
hbase(main):038:0> get'ns1:user','rw1','name'
COLUMN CELL
name: timestamp=1563083680020, value=wuqh
1 row(s) in 0.0090 seconds
更新一条记录
更新 user 表的 rw1 行、 age 列的值。
put 'ns1:user','rw1','age','22'
查看更新的结果。
get 'ns1:user','rw1','age'
COLUMN CELL
age: timestamp=1563083973835, value=22
1 row(s) in 0.0090 seconds
全表扫描
scan 'ns1:user'
删除一列
删除 user 表 rw1 行的一个列。
delete 'ns1:user','rw1','age'
查看删除的结果,删除了两次才删完?
hbase(main):045:0> scan 'ns1:user'
ROW COLUMN+CELL
rw1 column=age:, timestamp=1563083973835, value=22
rw1 column=name:, timestamp=1563083680020, value=wuqh
rw1 column=sex:, timestamp=1563083733940, value=boy
1 row(s) in 0.0190 seconds
hbase(main):046:0> delete 'ns1:user','rw1','age'
0 row(s) in 0.0490 seconds
hbase(main):047:0> get 'ns1:user','rw1'
COLUMN CELL
age: timestamp=1563083718436, value=20
name: timestamp=1563083680020, value=wuqh
sex: timestamp=1563083733940, value=boy
1 row(s) in 0.0130 seconds
hbase(main):048:0> delete 'ns1:user','rw1','age'
0 row(s) in 0.0070 seconds
hbase(main):049:0> get 'ns1:user','rw1'
COLUMN CELL
name: timestamp=1563083680020, value=wuqh
sex: timestamp=1563083733940, value=boy
1 row(s) in 0.0130 seconds
删除行的所有单元格
使用“deleteall”命令删除 user 表 rw1 行的所有列。
deleteall 'ns1:user','rw1'
查看删除的结果
hbase(main):051:0> scan 'ns1:user'
ROW COLUMN+CELL
0 row(s) in 0.0130 seconds
统计表中的行数
hbase(main):061:0> count 'ns1:user'
1 row(s) in 0.0340 seconds
=> 1
清空整张表
增加一些数据
put'ns1:user','rw1','name','wuqh'
put'ns1:user','rw1','age','20'
put'ns1:user','rw1','sex','boy'
清空
truncate'ns1:user'
Truncating 'ns1:user' table (it may take a while):
- Disabling table...
- Truncating table...
0 row(s) in 3.3220 seconds
查看清空结果
hbase(main):058:0> scan 'ns1:user'
ROW COLUMN+CELL
0 row(s) in 0.1230 seconds