#status后面可以跟不同的参数
status
status 'simple'
status 'summary' //默认的
status 'detailed'
hbase(main):015:0> status
1 active master, 1 backup masters, 3 servers, 0 dead, 1.3333 average load
hbase(main):016:0> version
1.2.4, r67592f3d062743907f8c5ae00dbbe1ae4f69e5af, Tue Oct 25 18:10:20 CDT 2016
hbase(main):001:0> whoami
hadoop (auth:SIMPLE)
groups: hadoop
Tables Management commands
alter
当一个alter操作有些赋值错误时,会卡主,退出重进
当hbase.online.schema.update.enable属性设置为false的时候,alter之前需要先disable操作
通过表名和一个dictionary指定一个新的column family
#保存cell的5个最新版本
hbase> alter 't1', NAME => 'f1', VERSIONS => 5
#增加一个column family===》增加‘f2’
hbase(main):015:0> alter 't1',NAME=>'f1',NAME=>'F2'
#用花括号分割,操作一个表的几个column family
alter 't1',{NAME=>'f1',VERSIONS=2},{NAME=>'f2',IN_MEMORY=>true}
#删除表t1的f1 列族
hbase(main):004:0> alter 't1','delete'=>'f1'
#更改表范围属性 MAX_FILESIZE, READONLY,MEMSTORE_FLUSHSIZE, DEFERRED_LOG_FLUSH等
hbase> alter 't1', MAX_FILESIZE => '134217728'
#完整版
alter 't1',METHOD=>'table_att',MAX_FILESIZE=>'134217728'
#通过设置表的coprocesser属性来为一个表指定协处理器
hbase> alter 't1','coprecessor'=>'[coprocessor jar file location] | class name | [priority] | [arguments]'
hbase> alter 't1','coprocessor'=>'hdfs:///foo.jar|com.foo.FooRegionObserver|1001|arg1=1,arg2=2'
#当一个表有很多协处理器时,a sequence number 会自动追加到属性名上来标识他们
#为某一个表或者某一个cf指定configuration
hbase> alter 't1',CONFIGURATION=>{'hbase.hregion.scan.loadColumnFamiliesOnDemand'=>'true'}
hbase> alter 't1', {NAME => 'f2', CONFIGURATION => {'hbase.hstore.blockingStoreFiles' => '10'}}
#移除表范围属性
hbase> alter 't1', METHOD => 'table_att_unset', NAME => 'MAX_FILESIZE'
hbase> alter 't1', METHOD => 'table_att_unset', NAME => 'coprocessor$1'
#设置region备份
hbase> alter 't1', {REGION_REPLICATION => 2}
#多个alter操作写在一起
hbase> alter 't1', { NAME => 'f1', VERSIONS => 3 }, { MAX_FILESIZE => '134217728' }, { METHOD => 'delete', NAME => 'f2' },OWNER => 'johndoe', METADATA => { 'mykey' => 'myvalue' }
create
建表命令
需要的参数:表名、列族名们(至少一个)
可选的参数:表配置、列配置、region配置
未指定namespace时,创建在default空间下
hbase> create 'ns1:t1', {NAME => 'f1', VERSIONS => 5}
hbase> create 't1', {NAME => 'f1'}, {NAME => 'f2'}, {NAME => 'f3'}
#上面的命令可以简写成下面的样子
hbase> create 't1', 'f1', 'f2', 'f3'
#表配置选项可以追加到上面的命令后
hbase> create 'ns1:t1', 'f1', SPLITS => ['10', '20', '30', '40']
hbase> create 't1', 'f1', SPLITS => ['10', '20', '30', '40']
hbase> create 't1', 'f1', SPLITS_FILE => 'splits.txt', OWNER => 'johndoe'
hbase> create 't1', {NAME => 'f1', VERSIONS => 5}, METADATA => { 'mykey' => 'myvalue' }
#预切割表
hbase> create 't1', 'f1', {NUMREGIONS => 15, SPLITALGO => 'HexStringSplit'}
hbase> create 't1', 'f1', {NUMREGIONS => 15, SPLITALGO => 'HexStringSplit', REGION_REPLICATION => 2, CONFIGURATION => {'hbase.hregion.scan.loadColumnFamiliesOnDemand' => 'true'}}
hbase> create 't1', {NAME => 'f1', DFS_REPLICATION => 1}
#引用
hbase> t1 = create 't1', 'f1'
describe
#完整的命令
hbase> describe 'ns1:t1'
#describe可以简写成desc
disable
hbase> disable 'ns1:t1'
disable_all
可以匹配正则
hbase(main):005:0> disable_all '.*1'
t1
is_disable
hbase(main):006:0> is_disabled 't1'
false
drop
show_filters
列出hbase的过滤器
alter_status
alter 命令的状态,返回多少个region更新完了,在使用alter的时候也可以看到
alter_async
异步更改,不用等每个region都更新完
Data Manipulation commands
count
#返回一个表的行数,表很大时,可能会花费很长时间,实际上执行了这个命令
$HADOOP_HOME/bin/hadoop jar hbase.jar rowcoun
#默认每数1000行显示一个count,这个显示间隔也可以被指定
hbase(main):006:0> count 'test',INTERVAL=>1
Current count: 1, row: row1
Current count: 2, row: row2
2 row(s) in 0.0380 seconds
=> 2
hbase(main):007:0> count 'test',INTERVAL=>2
Current count: 2, row: row2
2 row(s) in 0.0170 seconds
=> 2
#可以使用表引用
delete
#确定一个cell的参数:表名、行、列、时间戳
加不加{VISIBILITY=>'PRIVATE|SECRET'},没看出区别来
hbase(main):009:0> scan 'test'
ROW COLUMN+CELL
row1 column=data:1, timestamp=1492479184416, value=v4
row1 column=data:2, timestamp=1492479208074, value=v4
row2 column=data:2, timestamp=1490237442551, value=v2
2 row(s) in 0.0260 seconds
hbase(main):010:0> delete 'test', 'row1', 'data:1', 1492479184416
0 row(s) in 0.1050 seconds
hbase(main):011:0> scan 'test'
ROW COLUMN+CELL
row1 column=data:2, timestamp=1492479208074, value=v4
row2 column=data:2, timestamp=1490237442551, value=v2
2 row(s) in 0.0200 seconds
hbase(main):012:0> delete 'test', 'row1', 'data:2', 1492479208074,{VISIBILITY=>'PRIVATE|SECRET'}
0 row(s) in 0.0210 seconds
deleteall
#按行删除所有cell
#只指定行时,行所有cell都删除
#指定的越具体,删除的越少
get
#获得一行或者以个cell的内容
hbase> t.get 'r1'
hbase> t.get 'r1', {TIMERANGE => [ts1, ts2]}
hbase> t.get 'r1', {COLUMN => 'c1'}
hbase> t.get 'r1', {COLUMN => ['c1', 'c2', 'c3']}
hbase> t.get 'r1', {COLUMN => 'c1', TIMESTAMP => ts1}
#VERSIONS => 4 这是干啥的?
hbase> t.get 'r1', {COLUMN => 'c1', TIMERANGE => [ts1, ts2], VERSIONS => 4}
hbase> t.get 'r1', {COLUMN => 'c1', TIMESTAMP => ts1, VERSIONS => 4}
#过滤器,相当于模糊查询?
hbase> t.get 'r1', {FILTER => "ValueFilter(=, 'binary:abc')"}
hbase> t.get 'r1', 'c1'
hbase> t.get 'r1', 'c1', 'c2'
hbase> t.get 'r1', ['c1', 'c2']
#CONSISTENCY 一致性
hbase> t.get 'r1', {CONSISTENCY => 'TIMELINE'}
hbase> t.get 'r1', {CONSISTENCY => 'TIMELINE', REGION_REPLICA_ID => 1}
#除了默认的toStringBinary外,还可以为一个column指定格式化,只能为一个列指定,不能为一个列族指定
#自定义格式化的两种格式
hbase> get 't1', 'r1' {COLUMN => ['cf:qualifier1:toInt','cf:qualifier2:c(org.apache.hadoop.hbase.util.Bytes).toInt'] }
get_counter
返回一个counter cell的值,这个cell应该是自增长的,并且里面的值是二进制编码的
hbase> get_counter 'ns1:t1', 'r1', 'c1'
incr
incr的这个列必须是long型的
hbase(main):053:0> put 't1','r1','f1:c2','20000000'
0 row(s) in 0.0100 seconds
hbase(main):054:0> incr 't1','r1','f1:c2'
COUNTER VALUE = 3616443484303536177
0 row(s) in 0.3320 seconds
#用法
hbase> incr 'ns1:t1', 'r1', 'c1'
hbase> incr 't1', 'r1', 'c1'
hbase> incr 't1', 'r1', 'c1', 1
hbase> incr 't1', 'r1', 'c1', 10
hbase> incr 't1', 'r1', 'c1', 10, {ATTRIBUTES=>{'mykey'=>'myvalue'}}
hbase> incr 't1', 'r1', 'c1', {ATTRIBUTES=>{'mykey'=>'myvalue'}}
hbase> incr 't1', 'r1', 'c1', 10, {VISIBILITY=>'PRIVATE|SECRET'}
put
hbase> put 'ns1:t1', 'r1', 'c1', 'value'
hbase> put 't1', 'r1', 'c1', 'value'
hbase> put 't1', 'r1', 'c1', 'value', ts1
hbase> put 't1', 'r1', 'c1', 'value', {ATTRIBUTES=>{'mykey'=>'myvalue'}}
hbase> put 't1', 'r1', 'c1', 'value', ts1, {ATTRIBUTES=>{'mykey'=>'myvalue'}}
hbase> put 't1', 'r1', 'c1', 'value', ts1, {VISIBILITY=>'PRIVATE|SECRET'}
```
8. scan
hbase(main):057:0> scan ‘hbase:meta’
hbase(main):060:0> scan ‘hbase:meta’, {COLUMNS => ‘info:regioninfo’}
hbase> scan ‘ns1:t1’, {COLUMNS => [‘c1’, ‘c2’], LIMIT => 10, STARTROW => ‘xyz’}
hbase> scan ‘t1’, {COLUMNS => [‘c1’, ‘c2’], LIMIT => 10, STARTROW => ‘xyz’}
hbase> scan ‘t1’, {COLUMNS => ‘c1’, TIMERANGE => [1303668804, 1303668904]}
hbase> scan ‘t1’, {REVERSED => true}
hbase> scan ‘t1’, {ALL_METRICS => true}
hbase> scan ‘t1’, {METRICS => [‘RPC_RETRIES’, ‘ROWS_FILTERED’]}
hbase> scan ‘t1’, {ROWPREFIXFILTER => ‘row2’, FILTER => ”
(QualifierFilter (>=, ‘binary:xyz’)) AND (TimestampsFilter ( 123, 456))”}
hbase> scan ‘t1’, {FILTER =>
org.apache.hadoop.hbase.filter.ColumnPaginationFilter.new(1, 0)}
hbase> scan ‘t1’, {CONSISTENCY => ‘TIMELINE’}
#属性设置
hbase> scan ‘t1’, { COLUMNS => [‘c1’, ‘c2’], ATTRIBUTES => {‘mykey’ => ‘myvalue’}}
hbase> scan ‘t1’, { COLUMNS => [‘c1’, ‘c2’], AUTHORIZATIONS => [‘PRIVATE’,’SECRET’]}
#附加操作,caches blocks,为扫描器设置的一块缓存
hbase> scan ‘t1’, {COLUMNS => [‘c1’, ‘c2’], CACHE_BLOCKS => false}
#RAM 寄存器,返回所有的cell,包括被标记为deleted的和未收回的delted cell
hbase> scan ‘t1’, {RAW => true, VERSIONS => 10}
#scan也支持自定义格式
hbase> scan ‘t1’, {COLUMNS => [‘cf:qualifier1:toInt’,’cf:qualifier2:c(org.apache.hadoop.hbase.util.Bytes).toInt’] }
9. truncate
disable+drop+recreate
“`
HBase surgery tools
assign
#分配一个region(给谁?)
hbase> assign 'REGIONNAME'
hbase> assign 'ENCODED_REGIONNAME'
hbase(main):005:0> assign 't1,10,1492773948319.0d9258cf91b0838b3d480500f60c4310.'
0 row(s) in 0.7380 seconds
balancer
#触发集群平衡器
#返回true:balancer运行并且成功的通知regionservers去接触绑定来平衡集群(重新指派异步执行)
hbase(main):002:0> balancer
true
0 row(s) in 0.3150 seconds
#当region处于过度状态,或者开关关掉的时候返回false
hbase(main):017:0> balancer
false
0 row(s) in 0.0110 seconds
balance_switch
balancer 可用性开关
返回开关的上一个状态
hbase> balance_switch true
hbase> balance_switch false
close_region
关闭一个region
hbase> close_region 'REGIONNAME'
hbase> close_region 'REGIONNAME', 'SERVER_NAME'
hbase> close_region 'ENCODED_REGIONNAME'
hbase> close_region 'ENCODED_REGIONNAME', 'SERVER_NAME'
hbase(main):033:0> close_region 'testAgain,,1492676988483.c31e2b2195d2cde9b0236c773397e49d.'
0 row(s) in 0.0820 seconds
#使用encode regionname不好用
compact
Compact all regions in a table:
hbase> compact 'ns1:t1'
#实际上没有发生变化,t1的4个分区没有合并成一个。。。
hbase> compact 't1'
Compact an entire region:
hbase> compact 'r1'
Compact only a column family within a region:
hbase> compact 'r1', 'c1'
Compact a column family within a table:
hbase> compact 't1', 'c1'
flush
hbase> flush 'TABLENAME'
hbase> flush 'REGIONNAME'
hbase> flush 'ENCODED_REGIONNAME'
hbase(main):041:0> flush 't1,30,1492773948319.1f0aa448a2f0054fb07492afc16f177e.'
0 row(s) in 0.1010 seconds
hbase(main):043:0> flush 't1'
0 row(s) in 1.0100 seconds
major_compact
Compact all regions in a table:
hbase> major_compact 't1'
hbase> major_compact 'ns1:t1'
Compact an entire region:
hbase> major_compact 'r1'
Compact a single column family within a region:
hbase> major_compact 'r1', 'c1'
Compact a single column family within a table:
hbase> major_compact 't1', 'c1'
move
随机移动一个region 或者指定一个目的地
server_name的组成host+port+startcode
hbase> move 'ENCODED_REGIONNAME'
hbase> move 'ENCODED_REGIONNAME', 'SERVER_NAME'
split
split 'tableName'
split 'namespace:tableName'
split 'regionName' # format: 'tableName,startKey,id'
split 'tableName', 'splitKey'
split 'regionName', 'splitKey'
前面的一个分区点操作时分了10、20、30
现在把30到末尾分为30、35
hbase(main):009:0> split 't1,30,1492773948319.1f0aa448a2f0054fb07492afc16f177e.','35'
0 row(s) in 0.0700 seconds
unassign
加true参数强制清楚in-memory状态,然而不懂有啥用
hbase> unassign 'REGIONNAME'
hbase> unassign 'REGIONNAME', true
hbase> unassign 'ENCODED_REGIONNAME'
hbase> unassign 'ENCODED_REGIONNAME', true
hlog_roll
把日志信息写到一个file里
参数:servername
hbase(main):015:0> hlog_roll 'datanode2,16020,1493112337861'
0 row(s) in 0.0660 seconds
zk_dump
hbase(main):016:0> zk_dump
HBase is rooted at /hbase
Active master address: namenode,16000,1489714875654
Backup master addresses:
datanode2,16000,1489715230460
Region server holding hbase:meta: datanode2,16020,1489715865553
Region servers:
namenode,16020,1489714878404
datanode1,16020,1489714878004
datanode2,16020,1489715865553
/hbase/replication:
/hbase/replication/peers:
/hbase/replication/rs:
/hbase/replication/rs/datanode2,16020,1489715865553:
/hbase/replication/rs/datanode1,16020,1489714878004:
/hbase/replication/rs/namenode,16020,1489714878404:
Quorum Server Statistics:
namenode:2181
Zookeeper version: 3.4.9-1757313, built on 08/23/2016 06:50 GMT
Clients:
/172.16.11.235:43512[0](queued=0,recved=1,sent=0)
/172.16.11.235:43510[1](queued=0,recved=16,sent=16)
Latency min/avg/max: 0/1/100
Received: 271
Sent: 270
Connections: 2
Outstanding: 0
Zxid: 0x2000001ec
Mode: follower
Node count: 48
datanode1:2181
Zookeeper version: 3.4.9-1757313, built on 08/23/2016 06:50 GMT
Clients:
/172.16.11.218:52992[1](queued=0,recved=110518,sent=110525)
/172.16.11.218:52988[1](queued=0,recved=110289,sent=110289)
/172.16.11.235:52524[1](queued=0,recved=110690,sent=110698)
/172.16.11.218:52982[1](queued=0,recved=110291,sent=110291)
/172.16.11.235:42630[0](queued=0,recved=1,sent=0)
/172.16.11.235:52520[1](queued=0,recved=110278,sent=110278)
/172.16.11.235:52516[1](queued=0,recved=162973,sent=162973)
Latency min/avg/max: 0/0/31
Received: 718898
Sent: 718912
Connections: 7
Outstanding: 0
Zxid: 0x2000001ec
Mode: follower
Node count: 48
datanode2:2181
Zookeeper version: 3.4.9-1757313, built on 08/23/2016 06:50 GMT
Clients:
/172.16.11.235:51826[0](queued=0,recved=1,sent=0)
/172.16.11.216:37116[1](queued=0,recved=110286,sent=110286)
/172.16.11.218:38290[1](queued=0,recved=110288,sent=110288)
/172.16.11.235:33480[1](queued=0,recved=110275,sent=110275)
/172.16.11.216:37114[1](queued=0,recved=110489,sent=110495)
/172.16.11.235:33468[1](queued=0,recved=110274,sent=110274)
/172.16.11.235:51482[1](queued=0,recved=131,sent=131)
/172.16.11.235:33470[1](queued=0,recved=161093,sent=161488)
Latency min/avg/max: 0/0/152
Received: 715009
Sent: 715409
Connections: 8
Outstanding: 0
Zxid: 0x2000001ec
Mode: leader
Node count: 48