hbase命令汇总与常用命令演示以及flush命令详解

 hbase常用命令汇总

这个分类其实并不是我来做的,我们在使用hbase  shell命令进入hbase的交互式命令行之后,键入help命令,hbase就会列出所有的可用命令,并且也给你归好了类别。我这里列出所有的命令。

所有命令组:

  类别: 普通

  命令: status, table_help, version, whoami

 

  类别: ddl

  命令: alter, alter_async, alter_status, create, describe, disable, disable_all, drop, drop_all, enable, enable_all, exists, get_table, is_disabled, is_enabled, list, locate_region, show_filters

 

  类别: namespace

  命令: alter_namespace, create_namespace, describe_namespace, drop_namespace, list_namespace, list_namespace_tables

 

  类别: dml

  命令: append, count, delete, deleteall, get, get_counter, get_splits, incr, put, scan, truncate, truncate_preserve

 

  类别: tools

  命令: assign, balance_switch, balancer, balancer_enabled, catalogjanitor_enabled, catalogjanitor_run, catalogjanitor_switch, close_region, compact, compact_rs, flush, major_compact, merge_region, move, normalize, normalizer_enabled, normalizer_switch, split, trace, unassign, wal_roll, zk_dump

 

  

类别: replication

 

  命令: add_peer, append_peer_tableCFs, disable_peer, disable_table_replication, enable_peer, enable_table_replication, list_peers, list_replicated_tables, remove_peer, remove_peer_tableCFs, set_peer_tableCFs, show_peer_tableCFs

 

 

 

  类别: snapshots

  命令: clone_snapshot, delete_all_snapshot, delete_snapshot, list_snapshots, restore_snapshot, snapshot

 

 

 

  类别: configuration

  命令: update_all_config, update_config

 

 

 

  类别: quotas

  命令: list_quotas, set_quota

 

 

 

  类别: security

  命令: grant, list_security_capabilities, revoke, user_permission

 

 

 

  类别: procedures

  命令: abort_procedure, list_procedures

 

 

 

  类别: visibility labels

  命令: add_labels, clear_auths, get_auths, list_labels, set_auths, set_visibility

hbase常用命令演示

先看几个简单的,查看hbase的状态:

hbase(main):003:0> status
1 active master, 0 backup masters, 1 servers, 0 dead, 2.0000 average load

hbase的版本:

hbase(main):004:0> version
1.2.6, rUnknown, Mon May 29 02:25:32 CDT 2017

查看当前用户:

hbase(main):005:0> whoami
root (auth:SIMPLE)
    groups: root

创建一个表,名字叫person,有两个列族,分别叫cf1,cf2:

hbase(main):006:0> create 'person','cf1','cf2'
0 row(s) in 1.3210 seconds

=> Hbase::Table - person

查看一下是否创建成功:

hbase(main):007:0> list
TABLE                                                                                                                                                                                          
person                                                                                                                                                                                         
1 row(s) in 0.0380 seconds

=> ["person"]

查看person表的描述信息:

hbase(main):008:0> describe  'person'
Table person is ENABLED                                                                                                                                                                        
person                                                                                                                                                                                         
COLUMN FAMILIES DESCRIPTION                                                                                                                                                                    
{NAME => 'cf1', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'ROW', REPLICATION_SCOPE => '0', VERSIONS => '1', 
COMPRESSION => 'NONE', MIN_VERSIONS => '0', TTL => 'FOREVER', KEEP_DELETED_CELL
S => 'FALSE', BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'true'}                                                                                                                
{NAME => 'cf2', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'ROW', REPLICATION_SCOPE => '0', VERSIONS => '1', 
COMPRESSION => 'NONE', MIN_VERSIONS => '0', TTL => 'FOREVER', KEEP_DELETED_CELL
S => 'FALSE', BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'true'}                                                                                                                
2 row(s) in 0.1250 seconds

blocksize=>65536(64M),versions:最大版本数,默认就是1,也就是说针对一个单元格,只有一个是有效数据,其他的版本将在写入storefile的时候删除。    min_versions:最小版本数    ttl:time to live,存活时间。因为我们创建表使用的是最简单的语句,所以这里显示的都是默认值,在创建hbase表的时候,这些属性都是可以更改的。

向表里插入数据:

hbase(main):009:0> put 'person','00001','cf1:name','zhao'
0 row(s) in 0.1310 seconds

查看person表的所有数据:

hbase(main):010:0> scan   'person'
ROW                                              COLUMN+CELL                                                                                                                                   
 00001                                           column=cf1:name, timestamp=1521100351395, value=zhao                                                                                          
1 row(s) in 0.0450 seconds

再插入一条并查看:

hbase(main):011:0> put 'person','00001','cf1:sex','male'
0 row(s) in 0.0080 seconds

hbase(main):012:0> scan   'person'
ROW                                              COLUMN+CELL                                                                                                                                   
 00001                                           column=cf1:name, timestamp=1521100351395, value=zhao                                                                                          
 00001                                           column=cf1:sex, timestamp=1521100375458, value=male                                                                                           
1 row(s) in 0.0170 seconds

因为scan是进行全表的扫描,又因为我们知道hbase存储的都是pb级别的数据,我就问你敢不敢,所以我们一般使用get来获取数据:

hbase(main):013:0> get  'person','00001','cf1:name' 
COLUMN                                           CELL                                                                                                                                          
 cf1:name                                        timestamp=1521100351395, value=zhao                                                                                                           
1 row(s) in 0.0410 seconds

再给cf1:name插入一条数据,并通过get获取,有效的当然是时间戳最新的数据了:

hbase(main):014:0> put 'person','00001','cf1:name','zhao2'  
0 row(s) in 0.0120 seconds

hbase(main):015:0> get  'person','00001','cf1:name' 
COLUMN                                           CELL                                                                                                                                          
 cf1:name                                        timestamp=1521100406066, value=zhao2                                                                                                          
1 row(s) in 0.0160 seconds

表的删除,要先执行disable,再执行drop,不然会报错:

hbase(main):016:0> create 'tb1','cf' 
0 row(s) in 1.2570 seconds

=> Hbase::Table - tb1
hbase(main):021:0> disable 'tb1'
0 row(s) in 2.3040 seconds

hbase(main):022:0> drop 'tb1'
0 row(s) in 1.2760 seconds

 列出hbase的命名空间:

hbase(main):023:0> list_namespace
NAMESPACE                                                                                                                                                                                      
default                                                                                                                                                                                        
hbase                                                                                                                                                                                          
2 row(s) in 0.0580 seconds

退出交互式:

hbase(main):025:0> quit

hbase的flush命令与hbase数据目录结构

  切换到hbase的数据目录,查看其结构:

image.png

我们切换到cf1文件夹下面:

[root@node113 /tmp/hbase/data/default/person/659250b91403ea35fe8c08503eb77445/cf1]#ls
[root@node113 /tmp/hbase/data/default/person/659250b91403ea35fe8c08503eb77445/cf1]#

发现空空如也,我在上一篇教程里面已经添加过数据了啊,这里面明明是存放数据的,为什么没有任何东西呢?这是因为store是有memstore和sotrefile组成的,我们一开始写的数目是先存放在menstore中的,当menstore的大小达到一定的阈值之后才会溢写到storefile里面,上一篇教程里面我们只加了两条数据,自然达不到memstore的溢写阈值,这时候我们如果想要看到storefile的话,就要使用hbase的命令flush+表名来强制memstore溢写了。

hbase(main):024:0> flush 'person'
0 row(s) in 0.2700 seconds
[root@node113 /tmp/hbase/data/default/person/659250b91403ea35fe8c08503eb77445/cf1]#ls
57bca74819a54dd7b4893c5c910c8517

有了吧,我们使用命令hbase hfile -p -f  文件名的方式来查看文件内容.

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值