启动shell
Hbase集群搭建完毕后在linux中输入hbase回车可以看到很多帮助信息。这个是调用bin目录下的hbase脚本
输入Hbase Shell
基本shell命令
启动hbase shell后可以输入help查看帮助,hbase命令分很多组,我可以使用help命令查看具体某一个命令的用法,比如查看general组下的status命令
1.help
hbase(main):006:0> status 'simple'
可以看到server信息端口16020和浏览器中是一致的。
2.create
hbase(main):019:0> create 't1','f1'
创建表使用ddl组的create命令,添加查询数据使用dml组的put和scan命令
创建一个t1表,使用默认的命名空间ns1:t1,f1是列族名称
hbase(main):020:0> put't1','r1','f1:c1',1,1
使用put命令添加数据,r1是行键名称,f1:c1表示列族名称和列限定符名称,第一个1表示value,第二个1是版本号也可以是时间戳。
创建表时必须指定列族
3.count
hbase(main):001:0> count 't1'
1 row(s) in 1.1210 seconds
=> 1
查看t1表记录数量
4.list
hbase(main):002:0> list
TABLE
t1
1 row(s) in 0.2240 seconds
=> ["t1"]
查看表数量
5.disable drop
hbase(main):003:0> disable 't1'
0 row(s) in 2.9560 seconds
hbase(main):004:0> drop 't1'
0 row(s) in 2.4320 seconds
hbase(main):005:0> list
TABLE
0 row(s) in 0.0120 seconds
=> []
删除表必须先将其改为disable状态才能drop
6.命名空间
查看hbase命名空间
hbase(main):012:0> list_namespace
NAMESPACE
default
hbase
2 row(s) in 0.2440 seconds
查看命名空间下的表
hbase(main):013:0> list_namespace_tables'hbase'
TABLE
meta
namespace
2 row(s) in 0.0850 seconds
Hbase默认有两个命名空间hbase和default,hbase下有两张表meta和namespace。
namespace:表存放系统所有命名空间
hbase(main):015:0> scan 'hbase:namespace'
ROW COLUMN+CELL
default column=info:d, timestamp=1484122135416, value=\x0A\x07default
hbase column=info:d, timestamp=1484122135490, value=\x0A\x05hbase
2 row(s) in 0.1200 seconds
meta:存放所有region信息
创建表时根据行键切分,指定开始key和结束key,查找数据时根据行键的范围确定是region server是139
Hbase中meta表存放的是所有的region信息,查询时根据表名(tx2),行键确定regionserver再确定region从而定位记录。
以上信息在浏览器http://shb01:16010/都可以看到
7.truncate
清除表中数据,执行后无论表有多少个region(可能位于不同region server)都回全部删除然后再创建一个新的region
8.get
获取表tx1中行键为r1的记录
hbase(main):022:0> get 'tx1','r1'
COLUMN CELL
f1:cc1 timestamp=1, value=200
1 row(s) in 0.1670 seconds
1. 其他
创建t3表,定义两个列族f1,f2并且指定startkey,endkey
hbase(main):003:0> create't3','f1','f2',SPLITS=>['100','200','330']
0 row(s) in 4.8230 seconds
=> Hbase::Table - t3
分别向t3表的两个列族中插入数据
hbase(main):011:0> put't3','r1','f1:c1',1,200
0 row(s) in 0.1500 seconds
hbase(main):012:0> put't3','r2','f2:c2',1,201
0 row(s) in 0.0180 seconds
hbase(main):016:0> scan 't3'
ROW COLUMN+CELL
r1 column=f1:c1, timestamp=200, value=1
r2 column=f2:c2, timestamp=201, value=1
再看hdfs上的显示,hdfs上的hbase目录中存放相关数据,这个是hbase-site.xml文件中定义的。
在default命名空间下着4个是region信息,每个region下有之前建立的列族f1和f2,列族下有put进来的数据
在http://shb01:16010/table.jsp?name=t3显示如下
其中t3,100,1484267637964.a63ecf8700c36e14d5c4668d9606a1e2.为表名,startkey,表名称的hash编码,region的名称,其中region名称和上图中hdfs上的显示是一致的