hbase shell

HBase包含可以与HBase进行通信的Shell。 HBase使用Hadoop文件系统来存储数据。它拥有一个主服务器和区域服务器。数据存储将在区域(表)的形式。这些区域被分割并存储在区域服务器。

主服务器管理这些区域服务器,所有这些任务发生在HDFS。

通用命令

  • status: 提供HBase的状态,例如,服务器的数量。

  • version: 提供正在使用HBase版本。

  • table_help: 表引用命令提供帮助。

  • whoami: 提供有关用户的信息。

数据定义语言

  • create: 创建一个表。
  • list: 列出HBase的所有表。
  • disable: 禁用表。
  • is_disabled: 验证表是否被禁用。
  • enable: 启用一个表。
  • is_enabled: 验证表是否已启用。
  • describe: 提供了一个表的描述。
  • alter: 改变一个表。
  • exists: 验证表是否存在。
  • drop: 从HBase中删除表。
  • drop_all: 丢弃在命令中给出匹配“regex”的表。
  • Java Admin API: 在此之前所有的上述命令,Java提供了一个通过API编程来管理实现DDL功能。在这个org.apache.hadoop.hbase.client包中有HBaseAdmin和HTableDescriptor 这两个重要的类提供DDL功能。

数据操纵语言

  • put: 把指定列在指定的行中单元格的值在一个特定的表。
  • get: 取行或单元格的内容。
  • delete: 删除表中的单元格值。
  • deleteall: 删除给定行的所有单元格。
  • scan: 扫描并返回表数据。
  • count: 计数并返回表中的行的数目。
  • truncate: 禁用,删除和重新创建一个指定的表。
  • Java client API: 在此之前所有上述命令,Java提供了一个客户端API来实现DML功能,CRUD(创建检索更新删除)操作更多的是通过编程,在org.apache.hadoop.hbase.client包下。 在此包HTable 的 Put和Get是重要的类。

via ['vaiə]  通过,经过,经由

invoke 调用,恳求

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 how to use each of these commands.

However, as of 0.96, you can also get a reference to a table, on which you can invoke commands. For instance, you can get create a table and keep around a reference to it via:

   hbase> t = create 't', 'cf'

Or, if you have already created the table, you can get a reference to it:

   hbase> t = get_table 't'

You can do things like call 'put' on the table:

  hbase> t.put 'r', 'cf:q', 'v'

which puts a row 'r' with column family 'cf', qualifier 'q' and value 'v' into table t.

To read the data out, you can scan the table:

  hbase> t.scan

which will read all the rows in table 't'.

Essentially, any command that takes a table name can also be done via table reference. Other commands include things like: get, delete, deleteall, get_all_columns, get_counter, count, incr. These functions, along with the standard JRuby object methods are also available via tab completion.

For more information on how to use each of these commands, you can also just type:

   hbase> t.help 'scan'

which will output more information on how to use that command.

You can also do general admin actions directly on a table; things like enable, disable, flush and drop just by typing:

   hbase> t.enable  

  hbase> t.flush  

  hbase> t.disable   

hbase> t.drop

Note that after dropping a table, your reference to it becomes useless and further usage is undefined (and not recommended).

Took 0.0004 seconds       

创建表test,只有一个列族cf

hbase(main):006:0> create 'test','cf'
Created table test
Took 2.6122 seconds                                                                                                                          
=> Hbase::Table - test
hbase(main):007:0> list
TABLE                                                                                                                                        
test                                                                                                                                         
1 row(s)
Took 0.0329 seconds                                                                                                                          
=> ["test"]

查看hdfs如下:

drwxr-xr-x   - root supergroup          0 2018-05-15 17:44 /hbase/data/default/test
drwxr-xr-x   - root supergroup          0 2018-05-15 17:44 /hbase/data/default/test/.tabledesc
-rw-r--r--   1 root supergroup        472 2018-05-15 17:44 /hbase/data/default/test/.tabledesc/.tableinfo.0000000001
drwxr-xr-x   - root supergroup          0 2018-05-15 17:44 /hbase/data/default/test/.tmp
drwxr-xr-x   - root supergroup          0 2018-05-15 17:44 /hbase/data/default/test/2047326b0daeea60e8b91a4ad60f79d6
-rw-r--r--   1 root supergroup         39 2018-05-15 17:44 /hbase/data/default/test/2047326b0daeea60e8b91a4ad60f79d6/.regioninfo
drwxr-xr-x   - root supergroup          0 2018-05-15 17:44 /hbase/data/default/test/2047326b0daeea60e8b91a4ad60f79d6/cf
drwxr-xr-x   - root supergroup          0 2018-05-15 17:44 /hbase/data/default/test/2047326b0daeea60e8b91a4ad60f79d6/recovered.edits
-rw-r--r--   1 root supergroup          0 2018-05-15 17:44 /hbase/data/default/test/2047326b0daeea60e8b91a4ad60f79d6/recovered.edits/2.seqid

写入数据

hbase(main):028:0> put 'test','row1','cf:a','100'
Took 0.0094 seconds                                                                                                                          
hbase(main):029:0> put 'test','row2','cf:b','200'
Took 0.0076 seconds                                                                                                                          
hbase(main):030:0> put 'test','row3','cf:c','800'
Took 0.0041 seconds

以put 'test','row1','cf:a','100' 为例:

行key为row1, 列为 cf:a, 值是 100。HBase中的列是由 列族前缀和列的名字组成的,以
冒号间隔。例如这一行的列名就是a.

检查插入情况

hbase(main):046:0> scan 'test'
ROW                                  COLUMN+CELL                                                                                             
 row1                                column=cf:a, timestamp=1526378383424, value=100                                                         
 row2                                column=cf:b, timestamp=1526378395396, value=200                                                         
 row3                                column=cf:c, timestamp=1526378406372, value=800                                                         
3 row(s)
Took 0.0060 seconds                                                                                                                          
hbase(main):047:0> get 'test','row1'
COLUMN                               CELL                                                                                                    
 cf:a                                timestamp=1526378383424, value=100                                                                      
1 row(s)
Took 0.0068 seconds

hbase(main):054:0> is_disabled 'test'
false                                                                                                                                        
Took 0.0071 seconds                                                                                                                          
=> 1
hbase(main):055:0> is_enabled 'test'
true                                                                                                                                         
Took 0.0052 seconds                                                                                                                          
=> true

hbase(main):056:0> describe 'test'
Table test is ENABLED                                                                                                                        
test                                                                                                                                         
COLUMN FAMILIES DESCRIPTION                                                                                                                  
{NAME => 'cf', VERSIONS => '1', EVICT_BLOCKS_ON_CLOSE => 'false', NEW_VERSION_BEHAVIOR => 'false', KEEP_DELETED_CELLS => 'FALSE', CACHE_DATA_O
N_WRITE => 'false', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', MIN_VERSIONS => '0', REPLICATION_SCOPE => '0', BLOOMFILTER => 'ROW', CACH
E_INDEX_ON_WRITE => 'false', IN_MEMORY => 'false', CACHE_BLOOMS_ON_WRITE => 'false', PREFETCH_BLOCKS_ON_OPEN => 'false', COMPRESSION => 'NONE'
, BLOCKCACHE => 'true', BLOCKSIZE => '65536'}                                                                                                
1 row(s)
Took 0.1274 seconds 

hbase(main):057:0> disable 'test'
Took 0.8605 seconds                                                                                                                          
hbase(main):058:0> is_enabled 'test'
false                                                                                                                                        
Took 0.0053 seconds                                                                                                                          
=> false

hbase(main):059:0> exists 'test'
Table test does exist                                                                                                                        
Took 0.0030 seconds                                                                                                                          
=> true

hbase(main):060:0> enable 'test'
Took 1.3761 seconds                                                                                                                          
hbase(main):061:0> is_enabled 'test'
true                                                                                                                                         
Took 0.0052 seconds                                                                                                                          
=> true

hbase(main):062:0> drop 'test'   //删除一个表需要先disable,然后才能删除,否则报错

ERROR: Table test is enabled. Disable it first.

Drop the named table. Table must first be disabled:   hbase> drop 't1'   hbase> drop 'ns1:t1'

Took 0.0120 seconds

 hbase(main):063:0> disable 'test'
Took 0.7598 seconds                                                                                                                          
hbase(main):064:0> drop 'test'
Took 0.7568 seconds  

drop_all

这个命令是用来在给出删除匹配“regex”表。它的语法如下:

hbase> drop_all 't.*'

注意:要删除表,则必须先将其禁用。

创建表

hbase(main):066:0> create 't_account','accinfo','level'
Created table t_account
Took 2.3567 seconds                                                                                                                          
=> Hbase::Table - t_account

创建数据

使用put命令,可以插入行到一个表。它的语法如下:

put ’<table name>’,’row1’,’<colfamily:colname>’,’<value>’

hbase(main):072:0> put 't_account','1','accinfo:name','zhangsan'
Took 0.0093 seconds                                                                                                                          
hbase(main):073:0> put 't_account','1','accinfo:age','30'
Took 0.0029 seconds                                                                                                                          
hbase(main):074:0> put 't_account','1','level:viplevel','10'
Took 0.0035 seconds                                                                                                                          
hbase(main):075:0> put 't_account','1','level:userlevel','100'
Took 0.0024 seconds  

hbase(main):084:0> put 't_account','2','accinfo:name','tianyongtao'
Took 0.0054 seconds                                                                                                                          
hbase(main):085:0> put 't_account','2','accinfo:age','80'
Took 0.0027 seconds                                                                                                                          
hbase(main):086:0> put 't_account','2','level:userlevel','98'
Took 0.0036 seconds                                                                                                                          
hbase(main):087:0> put 't_account','2','level:viplevel','9'
Took 0.0029 seconds   

hbase(main):088:0> scan 't_account'
ROW                                  COLUMN+CELL                                                                                             
 1                                   column=accinfo:age, timestamp=1526451900687, value=30                                                   
 1                                   column=accinfo:name, timestamp=1526451871354, value=zhangsan                                            
 1                                   column=level:userlevel, timestamp=1526451966368, value=100                                              
 1                                   column=level:viplevel, timestamp=1526451955128, value=10                                                
 2                                   column=accinfo:age, timestamp=1526452258712, value=80                                                   
 2                                   column=accinfo:name, timestamp=1526452242674, value=tianyongtao                                         
 2                                   column=level:userlevel, timestamp=1526452289706, value=98                                               
 2                                   column=level:viplevel, timestamp=1526452300609, value=9                                                 
2 row(s)
Took 0.0074 seconds

 更新数据

可以使用put命令更新现有的单元格值。

put table name’,’row ’,'Column family:column name',’new value

hbase(main):094:0> put 't_account','2','level:viplevel','10'
Took 0.0070 seconds                                                                                                                          
hbase(main):095:0> get 't_account','2','level:viplevel'
COLUMN                               CELL                                                                                                    
 level:viplevel                      timestamp=1526452599771, value=10 

使用 get 命令,可以同时获取一行数据

get ’<table name>’,’row1

同样可以过去某一列族或者某一列的数据

hbase(main):097:0> get 't_account','2'
COLUMN                               CELL                                                                                                    
 accinfo:age                         timestamp=1526452258712, value=80                                                                       
 accinfo:name                        timestamp=1526452242674, value=tianyongtao                                                              
 level:userlevel                     timestamp=1526452289706, value=98                                                                       
 level:viplevel                      timestamp=1526452599771, value=10                                                                       
1 row(s)
Took 0.0064 seconds  

hbase(main):091:0> get 't_account','2','accinfo'
COLUMN                               CELL                                                                                                    
accinfo:age                         timestamp=1526452258712, value=80                                                                       
accinfo:name                        timestamp=1526452242674, value=tianyongtao                                                              
1 row(s)
Took 0.0067 seconds                                                                                                                          
hbase(main):092:0> get 't_account','2','level'
COLUMN                               CELL                                                                                                    
level:userlevel                     timestamp=1526452289706, value=98                                                                       
level:viplevel                      timestamp=1526452300609, value=9                                                                        
1 row(s)
Took 0.0068 seconds                                                                                                                          
hbase(main):093:0> get 't_account','2','level:viplevel'
COLUMN                               CELL                                                                                                    
level:viplevel                      timestamp=1526452300609, value=9                                                                        
1 row(s)
Took 0.0286 seconds

 删除行中的某个列值

hbase(main):098:0> get 't_account','1'
COLUMN                               CELL                                                                                                    
 accinfo:age                         timestamp=1526451900687, value=30                                                                       
 accinfo:name                        timestamp=1526451871354, value=zhangsan                                                                 
 level:userlevel                     timestamp=1526451966368, value=100                                                                      
 level:viplevel                      timestamp=1526451955128, value=10                                                                       
1 row(s)
Took 0.0147 seconds                                                                                                                          
hbase(main):099:0> delete 't_account','1','level:viplevel'
Took 0.1561 seconds                                                                                                                          
hbase(main):100:0> get 't_account','1'
COLUMN                               CELL                                                                                                    
 accinfo:age                         timestamp=1526451900687, value=30                                                                       
 accinfo:name                        timestamp=1526451871354, value=zhangsan                                                                 
 level:userlevel                     timestamp=1526451966368, value=100                                                                      
1 row(s)

hbase(main):148:0> get 't_account','2',COLUMN=>'level'
COLUMN                               CELL                                                                                                    
 level:userlevel                     timestamp=1526452289706, value=98                                                                       
 level:viplevel                      timestamp=1526457133619, value=99                                                                       
1 row(s)
Took 0.0041 seconds                                                                                                                          
hbase(main):149:0> get 't_account','2',COLUMN=>'level:userlevel'
COLUMN                               CELL                                                                                                    
 level:userlevel                     timestamp=1526452289706, value=98                                                                       
1 row(s)
Took 0.0053 seconds

删除行:

hbase(main):104:0> deleteall 't_account','1'
Took 0.0036 seconds                                                                                                                          
hbase(main):105:0> get 't_account','1'
COLUMN                               CELL                                                                                                    
0 row(s)
Took 0.0093 seconds

删除表中所有数据:

truncate  'tbname'  

其具体过程是:disable table -> drop table -> create table

修改表结构必须先disable

alter用于更改现有表的命令。使用此命令可以更改列族的单元,设定最大数量和删除表范围运算符,并从表中删除列家族。

更改列族单元格的最大数目

hbase(main):136:0> disable 't_account'
Took 0.7510 seconds                                                                                                                          
hbase(main):137:0> alter 't_account',{NAME=>'accinfo'},{NAME=>'accinf',VERSIONS=>'6'}
Updating all regions with the new schema...
All regions updated.
Done.
Took 1.5712 seconds                                                                                                                          
hbase(main):138:0> enable 't_account'
Took 1.2413 seconds    

hbase(main):176:0> scan 't_account'
ROW                                  COLUMN+CELL                                                                                             
 1                                   column=accinfo:age, timestamp=1526458674060, value=42                                                   
 1                                   column=accinfo:name, timestamp=1526458662013, value=xiaoma                                              
 1                                   column=level:userlevel, timestamp=1526458701559, value=56                                               
 1                                   column=level:viplevel, timestamp=1526458723924, value=6                                                 
 2                                   column=accinfo:age, timestamp=1526452258712, value=80                                                   
 2                                   column=accinfo:name, timestamp=1526452242674, value=tianyongtao                                         
 2                                   column=level:userlevel, timestamp=1526452289706, value=98                                               
 2                                   column=level:viplevel, timestamp=1526457133619, value=99                                                
2 row(s)
Took 0.0062 seconds                     

scan指定列以及起始行                                                                                                     
hbase(main):177:0> scan 't_account',{COLUMNS=>['accinfo:age','level'],LIMIT=>3,STARTROW=>'2'}
ROW                                  COLUMN+CELL                                                                                             
 2                                   column=accinfo:age, timestamp=1526452258712, value=80                                                   
 2                                   column=level:userlevel, timestamp=1526452289706, value=98                                               
 2                                   column=level:viplevel, timestamp=1526457133619, value=99                                                
1 row(s)
Took 0.0042 seconds      

hbase(main):193:0> t=get_table 't_account'
Took 0.0002 seconds                                                                                                                          
=> Hbase::Table - t_account
hbase(main):194:0> t.get '1'
COLUMN                               CELL                                                                                                    
 accinfo:age                         timestamp=1526458674060, value=42                                                                       
 accinfo:name                        timestamp=1526458662013, value=xiaoma                                                                   
 level:userlevel                     timestamp=1526458701559, value=56                                                                       
 level:viplevel                      timestamp=1526458723924, value=6                                                                        
1 row(s)
Took 0.0152 seconds 

hbase(main):201:0> t.get '1','level'
COLUMN                               CELL                                                                                                    
 level:userlevel                     timestamp=1526458701559, value=56                                                                       
 level:viplevel                      timestamp=1526458723924, value=6                                                                        
1 row(s)
Took 0.0036 seconds                                                                                                                      

hbase(main):202:0> t.get '1','level:userlevel'
COLUMN                               CELL                                                                                                    
 level:userlevel                     timestamp=1526458701559, value=56 

hbase(main):203:0> t.count
2 row(s)
Took 0.3144 seconds                                                                                                                         

  => 2

 hbase(main):212:0> count 't_account'
2 row(s)
Took 0.0045 seconds                                                                                                                          
=> 2

hbase(main):244:0> get 't_account','3',{COLUMN=>['level:userlevel','accinfo:name']}
COLUMN                                        CELL                                                                                                                              
 accinfo:name                                 timestamp=1526541050391, value=bamu                                                                                               
 level:userlevel                              timestamp=1526541079231, value=56                                                                                                 
1 row(s)
Took 0.0034 seconds                                                                                                                                                             
hbase(main):245:0>

原文地址:https://www.cnblogs.com/playforever/p/9042328.html