HBase提供了Shell命令行,功能类似于Oracle、MySQL等关系库的SQL Plus窗口那样,用户可以通过命令行模式进行创建表、新增和更新数据,以及删除表的操作。
采用的底层存储为HDFS。使用Hbase客户端操作,执行查看Hbase版本、状态、查看帮助命令。创建表、修改表、插入数据、删除数据、查询数据,清空表、退出Hbase命令行、停止HDFS服务。
1.启动HDFS服务进程和hbase服务进程,进入MoBaXterm
![Hadoop中HBase命令行操作_第1张图片](http://img.e-com-net.com/image/info8/0ba3cbfe4fd34fb9923d68c5cf123656.jpg)
切换用户
[root@hadoop00 ~]# su - hadoop
启动hdfs
[hadoop@hadoop00 ~]$ start-dfs.sh
启动HBase
[hadoop@hadoop00 ~]$ start-hbase.sh
![](http://img.e-com-net.com/image/info8/9fd7dc3c459c4ee2a629f404fe38a637.jpg)
查看进程
[hadoop@hadoop00 ~]$ jps
![Hadoop中HBase命令行操作_第2张图片](http://img.e-com-net.com/image/info8/384babcb6dea4e3180cffdb461a49221.jpg)
2.进入hbase 命令行客户端
[hadoop@hadoop00 ~]$ hbase shell
![Hadoop中HBase命令行操作_第3张图片](http://img.e-com-net.com/image/info8/6bb3c719ea3c4d1c937fba629493cba5.jpg)
3.利用help查看Hbase有哪些命令,部分截图如下
hbase(main):001:0> help
![Hadoop中HBase命令行操作_第4张图片](http://img.e-com-net.com/image/info8/70c3fb3fb11646c6a64da9ea4380775d.jpg)
4.查看某一组命令下的所有命令的简介和简单示范,如查看ddl。部分截图如下
hbase(main):003:0> help 'ddl'
![Hadoop中HBase命令行操作_第5张图片](http://img.e-com-net.com/image/info8/980639c16d6047f9b66281fad347c948.jpg)
5.查看某个命令的详细使用,如create。部分截图如下
hbase(main):004:0> help create
![Hadoop中HBase命令行操作_第6张图片](http://img.e-com-net.com/image/info8/b4a65f623bd54ff38de8bb5eaf348fe1.jpg)
6.使用general组中的命令。查看集群的状态
hbase(main):005:0> status
![](http://img.e-com-net.com/image/info8/ae88b84cfa834dcd8a8936c004c65d73.jpg)
7.使用general组中的命令。查看集群的版本
hbase(main):005:0> version
![](http://img.e-com-net.com/image/info8/31d277446076412b85a2acbce94c59c6.jpg)
8.使用general组中的命令。查看当前登录用户的角色信息
hbase(main):005:0> whoami
![](http://img.e-com-net.com/image/info8/eda38b0ef0ac454f97125f62904a19d1.jpg)
9.使用general组中的命令。查看对表进行操作的基本命令。部分截图如下
hbase(main):004:0> table_help
![Hadoop中HBase命令行操作_第7张图片](http://img.e-com-net.com/image/info8/d22d6ea5d4574286bff988750beaf12b.jpg)
10.使用ddl组中的命令。创建表。格式为:# create ‘表名’, ‘列族1’, ‘列族2’…
创建person表,列族为name和info
hbase(main):005:0> create 'person','name','info'
![Hadoop中HBase命令行操作_第8张图片](http://img.e-com-net.com/image/info8/8f728e31704e4c39a3180d824ec857c8.jpg)
11.上列也可以写成如下格式:create ‘person’,{NAME=>‘name’ },{NAME=>‘info’}
12.打开桌面的谷歌浏览器,输入http://hadoop00:50070出现界面后,选中菜单最后一项,选择“Browse the file system”
![Hadoop中HBase命令行操作_第9张图片](http://img.e-com-net.com/image/info8/63058b33dea74086aecec3d97db7ecb5.jpg)
13.出现如下界面,选择
![Hadoop中HBase命令行操作_第10张图片](http://img.e-com-net.com/image/info8/92fe5bd2841c4913954eb6e69d7f94d4.jpg)
理解其文件结构参考:
https://blog.csdn.net/h1025372645/article/details/97814312
https://www.cnblogs.com/zhangwuji/p/9160301.html
14.出现如下界面,此路径下即为存储表person的路径(/hbase/data/default/)
![Hadoop中HBase命令行操作_第11张图片](http://img.e-com-net.com/image/info8/0a68a6be53fc44cda6dcc23e9d572d7b.jpg)
15.选择person,出现如下界面,红框处即为存储数据的region
![Hadoop中HBase命令行操作_第12张图片](http://img.e-com-net.com/image/info8/b4c525552808485cb2befea76b07a7a0.jpg)
16.选择进入红框圈选的位置,出现如下图,可以看到,info和name即是我们创建表所指定列族存储的位置
![Hadoop中HBase命令行操作_第13张图片](http://img.e-com-net.com/image/info8/b3e050ab505841129279596fa21340eb.jpg)
17.使用ddl组中的命令。创建表时指定列族版本,指定列族是否常驻内存。创建person1表,列族为name版本为4和info常驻内存
hbase(main):004:0> create 'person1',{NAME=>'name', VERSIONS=>4 },{NAME=>'info',IN_MEMORY=>'true'}
![Hadoop中HBase命令行操作_第14张图片](http://img.e-com-net.com/image/info8/a3948d3e5f414961bcb392618fd320e6.jpg)
18.使用ddl组中的命令。查看数据库有哪些表
hbase(main):001:0> list
![Hadoop中HBase命令行操作_第15张图片](http://img.e-com-net.com/image/info8/429848537aaa445abddb4f96d9e24ac9.jpg)
19.使用ddl组中的命令。查看表person1的属性信息,命令格式使用describe’person1’ 或desc ‘person1’。# 其中的属性的意义:NAME:列族名;VERSIONS:最大版 本号;MIN_VERSIONS:最小版本号;TTL(Time To Live):存活时间;IN_MEMORY:是否开启缓存,默认false;BLOCKCACHE:读缓存是否开启,默认开启。
hbase(main):001:0> desc 'person1'![Hadoop中HBase命令行操作_第16张图片](http://img.e-com-net.com/image/info8/96fc7f01e7c6441e97008ad032d82ba6.jpg)
20.使用ddl组中的命令。修改表,增加列族。语法格式:alter ‘table_name’,‘add_family’ 或者alter ‘table_name’, {NAME => ‘add_family’} 当然,新增加的列可以设置属性,比如alter ‘table_name’, {NAME => ‘add_family’, VERSIONS => 3}设置表person1增加列族postion,版本为4
alter 'person1', {NAME => 'position', VERSIONS => 4}
alter 'person', {NAME => 'name', VERSIONS => 3}
21.使用ddl组中的命令,查看表person1的属性信息。部分截图如下
desc 'person1'
22.使用ddl组中的命令。修改表,删除列族。语法格式:alter ‘table_name’, {NAME=> ‘delete_family’, METHOD => ‘delete’} 或者 alter ‘table_name’, ‘delete’ => ‘delete_family’ 设置表person1删除列族postion。
alter 'person1', 'delete' => 'position'
23.使用ddl组中的命令。禁用表语法为disable ‘table_name’
disable 'person1'
24.使用ddl组中的命令。禁用表语法为is_disabled ‘table_name’
is_disabled 'person1'
25.使用ddl组中的命令。启用表语法为enable ‘table_name’
enable 'person1'
26.使用ddl组中的命令。查看表是否启用表语法为is enabled ‘table_name’
is_enabled 'person1'
![Hadoop中HBase命令行操作_第17张图片](http://img.e-com-net.com/image/info8/ff509937fb4742d8841f76dd3f5d1eef.jpg)
27.使用ddl组中的命令。删除表语法为drop ‘table_name’;在删除表前,需要先禁用表。
disable 'person1'
drop 'person1'
28.使用dml组中的命令。插入数据语法为put ‘表名’,‘rowkey’,‘列族名:列名’,‘值’。
如插入表person,行键为0001,列族name的列名为firstname,值为Jed
put 'person','0001','name:firstname', 'Jed'
29.使用dml组中的命令。插入数据语法为put ‘表名’,‘rowkey’,‘列族名:列名’,‘值’。
如插入表person,行键为0001,列族info的列名为hobby,值为Swim
put 'person','0001','info:hobby', 'Swim'
put 'person','0001','name:firstname', 'Tom'
put 'person','0001','name:firstname', 'Jim'
30.使用dml组中的命令,根据行键查询某行。语法为get ‘表名’,‘rowkey’。
如查询person,行键为0001。由于name:firstname列存储了三个版本,默认显示最新的值
get 'person','0001'
31.使用dml组中的命令,根据行键,指定列名查询某行。语法为get '表名',‘rowkey’,‘列族:列名’。如查询person,行键为0001,列为name:firstname。由于name:firstname列存储了三个版本,默认显示最新的值
[Command 025]:
get 'person', '0001','name:firstname'
32.使用dml组中的命令,查询person表中,rowkey为’0001’的这一行,只显示
name:firstname这一列,显示最新的3个版本
[Command 026]:
get 'person', '0001', {COLUMNS => 'name:firstname', VERSIONS => 3}
33.使用dml组中的命令,扫描person表
[Command 027]:
scan 'person'
34.使用dml组中的命令,扫描person表时指定列族
[Command 028]:
scan 'person', {COLUMNS => 'name'}
35.使用dml组中的命令,扫描person表时指定列族,并限定显示最新的2个版本
[Command 029]:
scan 'person', {COLUMNS => 'name'
,VERSIONS => 2}
36.使用dml组中的命令,删除数据,语法格式为:delete ‘table_name’, ‘rowkey’,‘family:column’。如删除person表中行键为0001,列名为info:hobby对应的值。
[Command 030]:
delete 'person', '0001', 'info:hobby'
37.使用dml组中的命令,扫描person表。可以看到info:hobby数据已经被删除。
[Command 031]:
scan 'person'
38.使用dml组中的命令,查询person表中列族为name,行键范围是[0001, 0003)的数据
[Command 032]:
scan 'person', {COLUMNS => 'name', STARTROW => '0001', ENDROW => '0003'}
39.使用dml组中的命令,查询查询person表中row key以00字符开头的数据
[Command 033]:
scan 'person',{FILTER=>"PrefixFilter('00')"}
40.使用dml组中的命令,清空表数据语法为:truncate ‘table_name’
[Command 034]:
truncate 'person'
41.退出Hbase命令行
[Command 035]:
exit