HBase提供了Shell命令行,功能类似于Oracle、MySQL等关系库的SQL Plus窗口那样,用户可以通过命令行模式进行创建表、新增和更新数据,以及删除表的操作。
采用的底层存储为HDFS。使用Hbase客户端操作,执行查看Hbase版本、状态、查看帮助命令。创建表、修改表、插入数据、删除数据、查询数据,清空表、退出Hbase命令行、停止HDFS服务。
1.启动HDFS服务进程和hbase服务进程,进入MoBaXterm
切换用户
[root@hadoop00 ~]# su - hadoop
启动hdfs
[hadoop@hadoop00 ~]$ start-dfs.sh
启动HBase
[hadoop@hadoop00 ~]$ start-hbase.sh
查看进程
[hadoop@hadoop00 ~]$ jps
2.进入hbase 命令行客户端
[hadoop@hadoop00 ~]$ hbase shell
3.利用help查看Hbase有哪些命令,部分截图如下
hbase(main):001:0> help
4.查看某一组命令下的所有命令的简介和简单示范,如查看ddl。部分截图如下
hbase(main):003:0> help 'ddl'
5.查看某个命令的详细使用,如create。部分截图如下
hbase(main):004:0> help create
6.使用general组中的命令。查看集群的状态
hbase(main):005:0> status
7.使用general组中的命令。查看集群的版本
hbase(main):005:0> version
8.使用general组中的命令。查看当前登录用户的角色信息
hbase(main):005:0> whoami
9.使用general组中的命令。查看对表进行操作的基本命令。部分截图如下
hbase(main):004:0> table_help
10.使用ddl组中的命令。创建表。格式为:# create '表名', '列族1', '列族2'...
创建person表,列族为name和info
hbase(main):005:0> create 'person','name','info'
11.上列也可以写成如下格式:create 'person',{NAME=>'name' },{NAME=>'info'}
12.打开桌面的谷歌浏览器,输入http://hadoop00:50070出现界面后,选中菜单最后一项,选择"Browse the file system"
13.出现如下界面,选择
理解其文件结构参考:
https://blog.csdn.net/h1025372645/article/details/97814312
https://www.cnblogs.com/zhangwuji/p/9160301.html
14.出现如下界面,此路径下即为存储表person的路径(/hbase/data/default/)
15.选择person,出现如下界面,红框处即为存储数据的region
16.选择进入红框圈选的位置,出现如下图,可以看到,info和name即是我们创建表所指定列族存储的位置
17.使用ddl组中的命令。创建表时指定列族版本,指定列族是否常驻内存。创建person1表,列族为name版本为4和info常驻内存
hbase(main):004:0> create 'person1',{NAME=>'name', VERSIONS=>4 },{NAME=>'info',IN_MEMORY=>'true'}
18.使用ddl组中的命令。查看数据库有哪些表
hbase(main):001:0> list
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'
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'
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