Hbase_02、Hbase的常⽤的shell命令Hbase的DDL操作Hbase的DML。。。
阅读⽬录
前⾔
笔者在分类中的Hbase栏⽬之前已经分享了hbase的安装以及⼀些常⽤的shell命令的使⽤,这⾥不仅仅重新复习⼀下shell命令,还会介绍hbase的DDL以及DML的相关操作。
⼀、hbase的shell操作
1.1启动hbase shell
在hbase的安装⽬录的bin⽬录下⾯启动我们的hbase,执⾏命令:hbase shell,执⾏效果以>结束,如下执⾏效果:
hbase shell
1.2执⾏hbase shell的帮助⽂档
输⼊help并按Enter键,可以显⽰HBase Shell的基本使⽤信息,和我们接下来会列举的⼀些命令类似。
需要注意的是,表名,⾏,列都必须包含在引号内。
执⾏效果:
help
1.3退出hbase shell
使⽤quit命令,退出HBase Shell 并且断开和集的连接,但此时HBase仍然在后台运⾏。
1.4使⽤status命令查看hbase现在的状态
hbase(main):004:0> status
1 active master, 0 backup masters,
2 servers, 0 dead, 1.0000 average load
从上⾯可以看出⼀个master在运⾏,并且下⾯有两个服务器...没有备份的master,没有死亡的服务。
1.5使⽤version命令查看hbase的相关的版本
hbase(main):005:0> version
1.3.1, r930b9a55528fe45d8edce7af42fef2d35e77677a, Thu Apr  6 19:36:54 PDT 2017
从上⾯可以看出版本是1.3.1版本的。
1.6table_help
此命令将引导如何使⽤表引⽤的命令。下⾯给出的是使⽤这个命令的语法:
table_help
1.7whoami
该命令返回HBase⽤户详细信息。如果执⾏这个命令,返回当前HBase⽤户,如下所⽰:
hbase(main):007:0> whoami
root (auth:SIMPLE)
groups: root
从上⾯我们看出操作者是root⽤户,该⽤户属于root组。
⼆、hbase的DDL相关的操作
2.1使⽤hbase创建表
# 2.1.1创建表
可以使⽤命令创建⼀个表,在这⾥必须指定表名和列族名。在HBase shell中创建表的语法如下所⽰:
create '<table name>','<column family>'
例⼦:
下⾯给出的是⼀个表名为emp的样本模式。它有两个列族:“personal data”和“professional data”:
1 hbase(main):005:0> create 'emp','personal data','professional data'
2 0 row(s) in 1.2570 seconds
3
4 => Hbase::Table - emp
# 2.1.2验证创建
可以验证是否已经创建,使⽤ list 命令如下所⽰。在这⾥,可以看到创建的emp表:
1 hbase(main):006:0> list
2 TABLE
3 emp
4 1 row(s) in 0.0480 seconds
5
6 => ["emp"]
从上⾯我们可以很直观地看出我们已经创建了相关的emp表格了。
2.2使⽤hbase禁⽤表
# 2.2.1禁⽤表
要删除表或改变其设置,⾸先需要使⽤ disable 命令关闭表。使⽤ enable 命令,可以重新启⽤它。
禁⽤我们上⾯创建的emp表:
1 hbase(main):008:0> disable 'emp'
2 0 row(s) in 2.3300 seconds
# 2.2.2验证禁⽤
禁⽤表之后,仍然可以通过 list 和exists命令查看到。但是⽆法扫描到它存在,它会给下⾯的错误。
下⾯以exists命令为例:
1 hbase(main):004:0> exists 'emp'
2 Table emp does exist
3 0 row(s) in 0.3610 seconds
从第⼆⾏我们可以很直观地看出我们的emp表是存在的。
扫描禁⽤表
# 2.2.3is_disabled
1)这个命令是⽤来查看表是否被禁⽤。它的语法如下:
hbase> is_disabled 'table name'
下⾯的例⼦验证表名为emp是否被禁⽤。如果禁⽤,它会返回true,如果没有,它会返回false。
1 hbase(main):031:0> is_disabled 'emp'
2 true
3 0 row(s) in 0.0440 seconds
从第⼆⾏中我们可以看出,这张emp表确实已经被禁⽤了。
2)disable_all
此命令⽤于禁⽤所有匹配给定正则表达式的表。disable_all命令的语法如下:
hbase> disable_all 'r.*'
假设有5个表在HBase,即raja, rajani, rajendra, rajesh 和 raju。下⾯的代码将禁⽤所有以 raj 开始的表。disable_all
2.3启⽤表
# 2.3.1启⽤表
命令格式:
enable 'table_name'
执⾏命令:
1 hbase(main):008:0> enable 'emp'
2 0 row(s) in 1.3610 seconds
# 2.3.2验证表是不是已经被启⽤了
启⽤表之后,扫描。如果能看到的模式,那么证明表已成功启⽤:
1 hbase(main):009:0> scan 'emp'
2 ROW                            COLUMN+CELL
3 0 row(s) in 0.0700 seconds
# 2.3.3is_enabled
此命令⽤于查表是否被启⽤。它的语法如下:
hbase> is_enabled 'table name'
下⾯的代码验证表emp是否启⽤。如果启⽤,它将返回true,如果没有,它会返回false。
1 hbase(main):010:0> is_enabled 'emp'
2 true
3 0 row(s) in 0.0130 seconds
hbase的特性有哪些2.4hbase的表描述和修改
# 2.4.1表描述
命令格式:
describe 'table_name'
下⾯给出的是对emp表的 describe 命令的输出:
1 hbase(main):011:0> describe 'emp'
2 Table emp is ENABLED
3 emp
4 COLUMN FAMILIES DESCRIPTION
5 {NAME => 'personal data', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DA
6 TA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSI
7 ZE => '65536', REPLICATION_SCOPE => '0'}
8 {NAME => 'professional data', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE'
9 , DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLO
10 CKSIZE => '65536', REPLICATION_SCOPE => '0'}
11 2 row(s) in 0.0430 seconds
# 2.4.2表修改
alter⽤于更改现有表的命令。使⽤此命令可以更改列族的单元,设定最⼤数量和删除表范围运算符,并从表中删除列家族。更改列族单元格的最⼤数⽬
1)下⾯给出的语法来改变列家族单元的最⼤数⽬。
hbase> alter 't1', NAME => 'f1', VERSIONS => 5
在下⾯的例⼦中,单元的最⼤数⽬设置为5。
hbase(main):003:0> alter 'emp', NAME => 'personal data', VERSIONS => 5
Updating all regions with the
0/1 regions updated.
1/1 regions updated.
Done.
0 row(s) in 2.3050 seconds
2)表范围运算符
使⽤alter,可以设置和删除表范围,运算符,如MAX_FILESIZE,READONLY,MEMSTORE_FLUSHSIZE,DEFERRED_LOG_FLUSH等。
设置只读
下⾯给出的是语法,是⽤以设置表为只读。
命令格式:
hbase>alter 't1', READONLY(option)
在下⾯的例⼦中,我们已经设置表emp为只读。
1 hbase(main):006:0> alter 'emp', READONLY
2 Updating all regions with the
3 0/1 regions updated.
4 1/1 regions updated.
5 Done.
6 0 row(s) in 2.2140 seconds
3)删除表范围运算符
也可以删除表范围运算。下⾯给出的是语法,从emp表中删除“MAX_FILESIZE”。
hbase> alter 't1', METHOD => 'table_att_unset', NAME => 'MAX_FILESIZE'
4)删除列族
使⽤alter,也可以删除列族。下⾯给出的是使⽤alter删除列族的语法。
hbase> alter ‘ table name ’, ‘delete’ => ‘ column family ’
下⾯给出的是⼀个例⼦,从“emp”表中删除列族。
假设在HBase中有⼀个employee表。它包含以下数据:
hbase(main):006:0> scan 'employee'
ROW                  COLUMN+CELL
row1 column=personal:city, timestamp=1418193767, value=hyderabad
row1 column=personal:name, timestamp=1418193806767, value=raju
row1 column=professional:designation, timestamp=1418193767, value=manager
row1 column=professional:salary, timestamp=1418193806767, value=50000
1 row(s) in 0.0160 seconds
现在使⽤alter命令删除指定的 professional 列族。
hbase(main):007:0> alter 'employee','delete'=>'professional'
Updating all regions with the
0/1 regions updated.
1/1 regions updated.
Done.
0 row(s) in 2.2380 seconds
现在验证该表中变更后的数据。观察列族“professional”也没有了,因为前⾯已经被删除了。hbase(main):003:0> scan 'employee'
ROW            COLUMN+CELL
row1 column=personal:city, timestamp=14181936767, value=hyderabad
row1 column=personal:name, timestamp=1418193806767, value=raju
1 row(s) in 0.0830 seconds
2.5删除表
drop命令可以删除表。在删除⼀个表之前必须先将其禁⽤。
hbase(main):018:0> disable 'emp'
0 row(s) in 1.4580 seconds
hbase(main):019:0> drop 'emp'
0 row(s) in 0.3060 seconds
使⽤exists 命令验证表是否被删除。
hbase(main):020:0> exists 'emp'
Table emp does not exist
0 row(s) in 0.0730 seconds
drop_all
这个命令是⽤来在给出删除匹配“regex”表。它的语法如下:
hbase> drop_all 't.*'
注意:要删除表,则必须先将其禁⽤。
⽰例
假设有⼀些表的名称为raja, rajani, rajendra, rajesh, 和 raju。
hbase(main):017:0> list
TABLE
raja
rajani
rajendra
rajesh
raju
9 row(s) in 0.0270 seconds
所有这些表以字母raj开始。⾸先使⽤disable_all命令禁⽤所有这些表如下所⽰:
hbase(main):002:0> disable_all 'raj.*'
raja
rajani
rajendra
rajesh
raju
Disable the above 5 tables (y/n)?
y
5 tables successfully disabled
现在,可以使⽤ drop_all 命令删除它们,如下所⽰:
hbase(main):018:0> drop_all 'raj.*'
raja
rajani
rajendra
rajesh
raju
Drop the above 5 tables (y/n)?
y
5 tables successfully dropped
2.6exit
可以通过键⼊exit命令退出shell。
hbase(main):021:0> exit
停⽌HBase
要停⽌HBase,浏览进⼊到HBase主⽂件夹,然后键⼊以下命令。
./bin/stop-hbase.sh
三、hbase的DML相关的操作
本章将介绍如何在HBase表中创建的数据。要在HBase表中创建的数据,可以下⾯的命令和⽅法:put 命令:
add() - Put类的⽅法
put() - HTable 类的⽅法
作为⼀个例⼦,我们将在HBase中创建下表:
使⽤put命令,可以插⼊⾏到⼀个表。它的语法如下:
put '<table name>','row1','<colfamily:colname>','<value>'
3.1hbase创建数据
⾸先我们按照上图的要求将第⼀⾏数据插⼊到表emp中:
1 hbase(main):014:0> put 'emp','1','personal data:name','raju'
2 0 row(s) in 0.0210 seconds
3 hbase(main):017:0> put 'emp','1','personal data:city','hyderabad'
4 0 row(s) in 0.0140 seconds
5 hbase(main):019:0> put 'emp','1','professional data:designation','manager'
6 0 row(s) in 0.0120 seconds
7 hbase(main):020:0> put 'emp','1','professional data:salary','5000'
8 0 row(s) in 0.0090 seconds
同样的⽅式将第⼆⾏,第三⾏插⼊到表中,此时进⾏扫描就会发现数据已经插⼊了:
hbase(main):001:0> scan 'emp'

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。