使用hbase shell命令进入hbase:

1
2
3
4
5
6
7
8
9
10
11
[root@abcdefghijklmnopqrstuvwxyzabcdefghijkl123456789012~] # hbase shell
SLF4J: Class path contains multiple SLF4Jbindings.
SLF4J: Found binding  in [jar: file : /usr/hdp/2 .4.3.0-227 /hadoop/lib/slf4j-log4j12-1 .7.10.jar! /org/slf4j/impl/StaticLoggerBinder .class]
SLF4J: Found binding  in [jar: file : /usr/hdp/2 .4.3.0-227 /zookeeper/lib/slf4j-log4j12-1 .6.1.jar! /org/slf4j/impl/StaticLoggerBinder .class]
SLF4J: Seehttp: //www .slf4j.org /codes .html #multiple_bindings for an explanation.
SLF4J: Actual binding is of  type [org.slf4j.impl.Log4jLoggerFactory]
HBase Shell; enter  'help<RETURN>'  forlist of supported commands.
Type  "exit<RETURN>"  toleave the HBase Shell
Version 1.1.2.2.4.3.0-227, rUnknown, FriSep  9 23:34:30 UTC 2016
  
hbase(main):001:0>

 

输入help 查看帮助信息

1
2
3
4
5
6
7
8
9
hbase(main):001:0> help
HBase Shell, version 1.1.2.2.4.3.0-227,rUnknown, Fri Sep  9 23:34:30 UTC 2016
Type  'help "COMMAND"' , (e.g. 'help "get"'  -- the quotes are necessary)  for  help on a specificcommand.
Commands are grouped. Type  'help"COMMAND_GROUP"' , (e.g.  'help "general"' for  help on acommand group.
  
COMMAND GROUPS:
  Group name: general
  Commands: status, table_help, version,  whoami

 

查看服务器状态:

1
2
hbase(main):002:0> status
1 active master, 0 backup masters, 4servers, 0 dead, 20.5000 average load

 

查看版本信息

1
2
hbase(main):003:0> version
1.1.2.2.4.3.0-227, rUnknown, Fri Sep  9 23:34:30 UTC 2016

 

查看当前用户:

1
2
3
hbase(main):004:0>  whoami
root (auth:SIMPLE)
groups : root

 

查看表相关命令的帮助信息:

1
2
3
4
5
6
hbase(main):005:0>  table_help
Help  for  table-reference commands.
  
You can either create a table via  'create' and  then  manipulate the table via commands like  'put' 'get' , etc.
See the standard help information  for  howto use each of these commands.

 

创建表

常用语法:create  '[namespacename:]tablename' [ ,'columnfamilyname1' [  ,'columnfamilyname2, ....]]

详细语法使用help -create 查看create语句

1
2
3
4
hbase(main):006:0> create  'test' , 'fam1' , 'fam2'
0 row(s)  in  8.3530 seconds
  
=> Hbase::Table –  test

 

使用list命令列出表名:

常用语法:list   '[namespacename:]tablename]

详细语法可以使用help 'list' 查看,list 后面可以跟正则表达式,列出符合表达式的表名

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
hbase(main):011:0> list  'test'  –列出名为 test 的表名
TABLE                                                                                                                                                              
test                                                                                                                                                               
1 row(s)  in  0.0110 seconds
  
=> [ "test" ]
hbase(main):012:0> list  'tes.*' —列出以名称tes开头的表名
TABLE                                                                                                                                                              
test                                                                                                                                                               
test :testtable                                                                                                                                                      
2 row(s)  in  0.0150 seconds
  
=> [ "test" , "test:testtable" ]
hbase(main):013:0> list  'default:.*'  –列出default命名空间下的表名
TABLE                                                                                                                                                               
ambarismoketest                                                                                                                                                    
test                                                                                                                                                               
2 row(s)  in  0.0150 seconds
  
=> [ "ambarismoketest" , "test" ]
hbase(main):014:0> list  'test:.*'  –列出 test 这个命名空间下的表名
TABLE                                                                                                                                                              
test :testtable                                                                                                                                                      
1 row(s)  in  0.0140 seconds
  
=> [ "test:testtable" ]

 

使用desc命令查看指定表的具体信息(desc等同于describe)

语法:desc '[namespacename:]tablename'

          describe '[namespacename:]tablename'

详细语法使用help  'describe'查看

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
hbase(main):016:0> desc  'test'   查看 test 这张表的信息
Table  test  is ENABLED                                                                                                                                               
test                                                                                                                                                               
COLUMN FAMILIES DESCRIPTION                                                                                                                                        
{NAME =>  'fam1' , BLOOMFILTER => 'ROW' , VERSIONS =>  '1' , IN_MEMORY =>  'false' , KEEP_DELETED_CELLS => 'FALSE' , DATA_BLOCK_ENCODING =>  'NONE' , TTL =>  'FOREVER' , COMPRE
SSION =>  'NONE' , MIN_VERSIONS =>  '0' ,BLOCKCACHE =>  'true' , BLOCKSIZE =>  '65536' , REPLICATION_SCOPE => '0' }                                                        
{NAME =>  'fam2' , BLOOMFILTER => 'ROW' , VERSIONS =>  '1' , IN_MEMORY =>  'false' , KEEP_DELETED_CELLS => 'FALSE' , DATA_BLOCK_ENCODING =>  'NONE' , TTL =>  'FOREVER' , COMPRE
SSION =>  'NONE' , MIN_VERSIONS =>  '0' ,BLOCKCACHE =>  'true' , BLOCKSIZE =>  '65536' , REPLICATION_SCOPE => '0' }                                                        
2 row(s)  in  0.1710 seconds
  
hbase(main):017:0> desc  'test:testtable' 查看 test 命名空间下testtable这张表的信息
Table  test :testtable is ENABLED                                                                                                                                    
test :testtable                                                                                                                                                     
COLUMN FAMILIES DESCRIPTION                                                                                                                                         
{NAME =>  'colfam1' , BLOOMFILTER => 'ROW' , VERSIONS =>  '1' , IN_MEMORY =>  'false' , KEEP_DELETED_CELLS => 'FALSE' , DATA_BLOCK_ENCODING =>  'NONE' , TTL =>  'FOREVER' , COM
PRESSION =>  'NONE' , MIN_VERSIONS => '0' , BLOCKCACHE =>  'true' , BLOCKSIZE =>  '65536' , REPLICATION_SCOPE => '0' }                                                     
{NAME =>  'colfam2' , BLOOMFILTER => 'ROW' , VERSIONS =>  '1' , IN_MEMORY =>  'false' , KEEP_DELETED_CELLS => 'FALSE' , DATA_BLOCK_ENCODING =>  'NONE' , TTL =>  'FOREVER' , COM
PRESSION =>  'NONE' , MIN_VERSIONS => '0' , BLOCKCACHE =>  'true' , BLOCKSIZE =>  '65536' , REPLICATION_SCOPE => '0' }                                                      
{NAME =>  'colfam3' , BLOOMFILTER => 'ROW' , VERSIONS =>  '1' , IN_MEMORY =>  'false' , KEEP_DELETED_CELLS => 'FALSE' , DATA_BLOCK_ENCODING =>  'NONE' , TTL =>  'FOREVER' , COM
PRESSION =>  'NONE' , MIN_VERSIONS => '0' , BLOCKCACHE =>  'true' , BLOCKSIZE =>  '65536' , REPLICATION_SCOPE => '0' }                                                     
3 row(s)  in  0.0290 seconds

 

使用put插入数据

常用语法:put '[namespacename:]tablename' , 'rowkey' , 'columnfamilyname[:column]' , 'value'

详细语法使用help 'put'查看

1
2
3
4
5
6
7
8
hbase(main):002:0> put 'test' , 'row2' , 'fam1:a' , 'value'
0 row(s)  in  0.3760 seconds
hbase(main):003:0> put  'test' , 'row1' , 'fam1:a' , 'value'
0 row(s)  in  0.3760 seconds
hbase(main):004:0> put  'test' , 'row1' , 'fam2:a' , 'value'
0 row(s)  in  0.3760 seconds
hbase(main):005:0> put 'test' , 'row2' , 'fam2:a' , 'value'
0 row(s)  in  0.3760 seconds

 

使用scan查看全表数据

常用语法:scan '[namespacename:]tablename'

详细语法使用help 'scan'查看

1
2
3
4
5
6
7
hbase(main):002:0> scan  'test'
ROW                                       COLUMN+CELL                                                                                                             
  row1                                     column=fam1:a, timestamp=1504767451331, value=value                                                                     
  row1                                     column=fam2:a, timestamp=1504767471977, value=value                                                                     
  row2                                     column=fam1:a, timestamp=1504767600686, value=value                                                                     
  row2                                     column=fam2:a, timestamp=1504767715014, value=value                                                                     
2 row(s)  in  0.1120 seconds

 

查看指定列的数据:

1
2
3
4
5
6
7
8
9
10
11
hbase(main):004:0> scan  'test' ,{COLUMNS=>  'fam1:a' }
ROW                                       COLUMN+CELL                                                                                                              
  row1                                     column=fam1:a, timestamp=1504767451331, value=value                                                                     
  row2                                      column=fam1:a,timestamp=1504767600686, value=value                                                                     
2 row(s)  in  0.2390 seconds
  
hbase(main):021:0> get  'test' , 'row1'
COLUMN                                     CELL                                                                                                                    
  fam1:a                                   timestamp=1504768075731, value=\x00\x00\x00\x00\x00\x00\x00\x02                                                         
  fam2:a                                   timestamp=1504767471977, value=value                                                                                    
2 row(s)  in  0.1110 seconds

 

使用get查询数据:

语法:get  '[namespacename:]tablename' , 'rowkey' [, 'columnfamliyname[:column]']

详细语法使用help 'get'查看

1
2
3
4
5
6
7
8
hbase(main):024:0> get 'test' , 'row1' , 'fam1'
COLUMN                                     CELL                                                                                                                    
  fam1:a                                   timestamp=1504768075731, value=\x00\x00\x00\x00\x00\x00\x00\x02                                                         
1 row(s)  in  0.0690 seconds
hbase(main):026:0> get  'test' , 'row1' , 'fam1:a'
COLUMN                                     CELL                                                                                                                    
  fam1:a                                   timestamp=1504768075731, value=\x00\x00\x00\x00\x00\x00\x00\x02                                                         
1 row(s)  in  0.0430 seconds

 

使用delete删除数据

常用语法:delete '[namespacename:]tablename' , 'rowkey' , 'columnfamliyname:column'

当表中存在只制定了columnfamily没有具体制定column的数据时,delete可以这么用

delete '[namespacename:]tablename' , 'rowkey' , 'columnfamliyname',不存在这样的数据,使用这样的语句不会删除数据。

更详细的语法使用help 'delete'查看

1
2
3
4
5
6
7
8
9
hbase(main):008:0> delete 'test' , 'row1' , 'fam1:a'
0 row(s)  in  0.3370 seconds
  
hbase(main):009:0> scan  'test'
ROW                                       COLUMN+CELL                                                                                                             
  row1                                     column=fam2:a, timestamp=1504767471977, value=value                                                                     
  row2                                     column=fam1:a, timestamp=1504767600686, value=value                                                                     
  row2                                     column=fam2:a, timestamp=1504767715014, value=value                                                                     
2 row(s)  in  0.0850 seconds

 

使用incr增加数据(默认使用counter实现递增)

常用语法:incr '[namespacename:]tablename' , 'rowkey' , 'columnfamilyname:column'

更详细的语法使用help 'incr'查看

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
hbase(main):012:0> incr 'test' , 'row1' , 'fam1:a'
COUNTER VALUE = 1
0 row(s)  in  1.1700 seconds
  
hbase(main):013:0> scan  'test'
ROW                                       COLUMN+CELL                                                                                                             
  row1                                      column=fam1:a,timestamp=1504768054892, value=\x00\x00\x00\x00\x00\x00\x00\x01                                          
  row1                                     column=fam2:a, timestamp=1504767471977, value=value                                                                      
  row2                                     column=fam1:a, timestamp=1504767600686, value=value                                                                     
  row2                                      column=fam2:a, timestamp=1504767715014,value=value                                                                     
2 row(s)  in  0.0410 seconds
  
hbase(main):014:0> incr 'test' , 'row1' , 'fam1:a'
COUNTER VALUE = 2
0 row(s)  in  0.0480 seconds
  
hbase(main):015:0> scan  'test'
ROW                                       COLUMN+CELL                                                                                                             
  row1                                     column=fam1:a, timestamp=1504768075731,value=\x00\x00\x00\x00\x00\x00\x00\x02                                          
  row1                                     column=fam2:a, timestamp=1504767471977, value=value                                                                     
  row2                                     column=fam1:a, timestamp=1504767600686, value=value                                                                     
  row2                                     column=fam2:a, timestamp=1504767715014, value=value                                                                     
2 row(s)  in  0.0770 seconds

 

使用get_counter查看当前的counter值:

1
2
hbase(main):027:0> get_counter 'test' , 'row1' , 'fam1:a'
COUNTER VALUE = 2

 

使用put更新数据:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
hbase(main):029:0> scan  'test'
ROW                                        COLUMN+CELL                                                                                                             
  row1                                     column=fam1:a, timestamp=1504768075731,value=\x00\x00\x00\x00\x00\x00\x00\x02                                          
  row1                                     column=fam2:a, timestamp=1504767471977, value=value                                                                     
  row2                                     column=fam1:a, timestamp=1504767600686, value=value                                                                     
  row2                                     column=fam2:a, timestamp=1504767715014, value=value                                                                     
2 row(s)  in  0.0270 seconds
  
hbase(main):030:0> put 'test' , 'row1' , 'fam1:a' , 'newvalue'
0 row(s)  in  0.0250 seconds
  
hbase(main):031:0> scan  'test'
ROW                                        COLUMN+CELL                                                                                                             
  row1                                     column=fam1:a, timestamp=1504768397480, value=newvalue                                                                   
  row1                                     column=fam2:a, timestamp=1504767471977, value=value                                                                     
  row2                                     column=fam1:a, timestamp=1504767600686, value=value                                                                     
  row2                                     column=fam2:a, timestamp=1504767715014, value=value                                                                     
2 row(s)  in  0.0760 seconds

 

使用is_enabled/is_disabled查看表是否被启用/禁用

1
2
3
4
5
6
7
8
9
10
hbase(main):032:0> is_enable  'test'
NoMethodError: undefined method `is_enable' for  #<Object:0x15d114ce>
  
hbase(main):033:0> is_enabled  'test'
true                                                                                                                                                               
0 row(s)  in  0.1180 seconds
  
hbase(main):034:0> is_disabled  'test'
false                                                                                                                                                              
0 row(s)  in  0.0190 seconds

 

使用disable禁用表

1
2
3
4
5
6
hbase(main):001:0> disable  'test'
0 row(s)  in  4.7170 seconds
  
hbase(main):002:0> is_disabled  'test'
true                                                                                                                                                               
0 row(s)  in  0.0210 seconds

 

使用enbale启用表

1
2
3
4
5
6
hbase(main):003:0>  enable  'test'
0 row(s)  in  2.2910 seconds
  
hbase(main):004:0> is_enabled  'test'
true                                                                                                                                                               
0 row(s)  in  0.0180 seconds

 

删除fam1这个columnfamily:

1
2
3
4
5
6
7
8
9
10
11
12
13
hbase(main):007:0> alter 'test' ,{NAME=> 'fam1' ,METHOD=> 'delete' }
Updating all regions with the new schema...
1 /1  regions updated.
Done.
0 row(s)  in  2.1980 seconds
  
hbase(main):008:0> desc  'test'
Table  test  is ENABLED                                                                                                                                              
test                                                                                                                                                               
COLUMN FAMILIES DESCRIPTION                                                                                                                                        
{NAME =>  'fam2' , BLOOMFILTER =>  'ROW' ,VERSIONS =>  '1' , IN_MEMORY =>  'false' , KEEP_DELETED_CELLS =>  'FALSE' ,DATA_BLOCK_ENCODING =>  'NONE' , TTL =>  'FOREVER' , COMPRE
SSION =>  'NONE' , MIN_VERSIONS =>  '0' ,BLOCKCACHE =>  'true' , BLOCKSIZE =>  '65536' , REPLICATION_SCOPE => '0' }                                                         
1 row(s)  in  0.0350 seconds

 

清空表数据:

1
2
3
4
5
6
7
8
9
hbase(main):009:0> truncate  'test'
Truncating  'test'  table (it may take awhile):
  -Disabling table...
  -Truncating table...
0 row(s)  in  3.6540 seconds
  
hbase(main):010:0> scan  'test'
ROW                                       COLUMN+CELL                                                                                                             
0 row(s)  in  0.0460 seconds

 

删除表(必须先disable表才能drop表):

1
2
3
4
5
6
7
8
9
10
11
hbase(main):011:0> disable  'test'
0 row(s)  in  2.2680 seconds
  
hbase(main):012:0> drop  'test'
0 row(s)  in  1.2680 seconds
  
hbase(main):014:0> list  'test'
TABLE                                                                                                                                                              
0 row(s)  in  0.0110 seconds
  
=> []