zoukankan      html  css  js  c++  java
  • 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>

  • 相关阅读:
    [转]Asp.Net 备份和恢复SQL SERVER 数据库
    alert 的封装
    using(sqlConnection conn=new sqlConnection) 中using的作用
    dotnet 上传大文件的配置的方法
    allowDefinition='MachineToApplication'
    转 Server Application Error报错信息的解决方案
    url 自动加入链接
    MVC中使用RadioButtonFor
    linux iptables squid 透明代理
    linux iptables网关配置,端口转发
  • 原文地址:https://www.cnblogs.com/playforever/p/9042328.html
Copyright © 2011-2022 走看看