Hadoop中HBase命令行操作

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