1.基本操作
1. 进入 HBase客户端的命令
hbase shell
2. 查看帮助命令
help
3. 查看当前数据库有哪些表
list
4. 查看当前用户及对应所属组
结果如下:
hbase(main):038:0> whoami
hbase (auth:SIMPLE)
groups: hadoop
5. 查看Hbase服务器状态
hbase(main):039:0> status
1 active master, 1 backup masters, 3 servers, 0 dead, 21.3333 average load
6. 查看版本信息
hbase(main):040:0> version
1.1.2.1.1.0.0-0131, r8c3e6f0c9bb687c3caaafc932e38e6042ac73e0c, 2017年 11月 27日 星期一 15:16:41 CST
2.表的基本操作
1. 创建表
hbase(main):006:0> create 'student','infor'
2. 插入数据到表
hbase(main):008:0> put 'student','1001','infor:sex','male'
0 row(s) in 0.0230 seconds
hbase(main):009:0> put 'student','1001','infor:age','18'
0 row(s) in 0.0130 seconds
hbase(main):010:0> put 'student','1002','infor:name','guozi'
0 row(s) in 0.0110 seconds
hbase(main):011:0> put 'student','1002','infor:sex','male'
0 row(s) in 0.0110 seconds
hbase(main):012:0> put 'student','1002','infor:age','18'
0 row(s) in 0.0110 seconds
3. 扫描查看表数据
(1)全表扫描
hbase(main):013:0> scan 'student'
(2)按指定的rowkey查看
hbase(main):014:0> scan 'student',{STARTROW => '1001',STOPROW=>'1001'}
结果如下:
4. 查看表结构
hbase(main):015:0> describe 'student'
5. 更新指定字段的数据
put 'student','1001','info:name','xiaoyanjing'
6.查看“指定行”或“指定列族:列”的数据
(1)获取指定行的数据
hbase(main):031:0> get 'student','1001'
(2)获取指定字段值信息
hbase(main):033:0> get 'student','1001','infor:name'
7. 统计表数据行数(记录数)
hbase(main):034:0> count 'student'
结果如下:
8. 删除数据
hbase(main):016:0> deleteall 'student','1001'
hbase(main):017:0> delete 'student','1002','infor:sex'
9. 清空表数据
hbase(main):018:0>disable 'student'
hbase(main):018:0> truncate 'student'
*先禁止表,然后再清空
10. 删除表
首先需要先让该表为 disable 状态:
hbase(main):019:0> disable 'student'
然后才能 drop 这个表:
hbase(main):020:0> drop 'student'
提示:如果直接 drop 表,会报错:ERROR: Table student is enabled. Disable it first.
11. 变更表信息
将infor列族中的信息存放三个版本
hbase(main):035:0> alter 'student',{NAME=>'infor',VERSIONS=>3}
结果如下:
查看内容:
hbase(main):037:0> get 'student','1001',{COLUMN=>'infor:name',VERSIONS=>3}
12 修改表的压缩格式
(1) 先disable表
hbase(main):018:0> disable 'test_dd‘
(2) 修改表的压缩格式
hbase(main):018:0> alter 'test_dd', NAME => 'f', COMPRESSION => 'snappy‘
ps:假如你不小心创建了一个新列族的话,可以通过以下方式删除:
hbase(main):018:0> alter 'test_dd', {NAME=>'f', METHOD=>'delete'}
(3) 重新enable表
hbase(main):018:0> enable 'test_dd‘
(4)enable表后,HBase表的压缩格式并没有生效,还需要一个动作,即HBase major_compact
hbase(main):018:0> major_compact 'test_dd‘
该动作耗时较长,会对服务有很大影响,可以选择在一个服务不忙的时间来做。
describe一下该表,可以看到HBase 表压缩格式修改完毕。
13 . 采用RowCounter快速统计Hbase中的表
RowCounter相比于count要快很多,他利用map-reduce进行统计.
su - hbase
[hbase@bigdata3 ~]$ hbase org.apache.hadoop.hbase.mapreduce.RowCounter 'test_dd'
统计1千多万条数据总共耗时大概 51秒
14. 查看Hbase表的meta表的数据
Hbase的meta表的结构信息如下图所示:
scan ‘hbase:meta’
目的是为了查看该表是由哪台服务器所维护,读写请求时候该向哪个服务器发送请求信息。
scan ‘hbase:meta’往往得到的是Hbase中所有表的元信息,如果得到指定的表的元信息呢?
利用下面的shell语句可以得到想要的表的信息
su - hbase
[hbase@bigdata3 ~]$ echo "scan 'hbase:meta'" | hbase shell | grep 'test_dd'
3.小结
本文讲解了有关Hbase shell的一些基本命令,主要为针对Hbase数据库的增删改查操作,相应的每一条命令也对应java的一个API。