命名空间
查看指定命名空间表
list_namespace_tables 'hbase'
创建namespace
create_namespace 'test'
删除namespace
drop_namespace 'test'
查看namespace
describe_namespace 'hbase'
列出所有namespace
list_namespace
在namespace下创建表
create 'ai_ns:testtable', 'fm1'
基础命令
查看表结构
desc 'tableName'
describe 'tableName'
设置TTL
# 语法:alter 't1', {NAME => 'f1'}, {NAME => 'f2', METHOD => 'delete'}
# 例如:修改表test1的cf的TTL为180天
# TTL 单位为秒
disable 'test1'
alter 'test1',{NAME=>'body',TTL=>'15552000'},{NAME=>'meta', TTL=>'15552000'}
enable 'test1'
PUT添加数据
put 表名 ,rowkey,列名(列族:列名),value
删除表
disable 't1'
drop 't1'
删除列簇
disable 'table1'
alter 'table1', {NAME=>'tab1_add', METHOD=>'delete'}
enable 'table1'
删除整行数据
deleteall 'tableName', 'RowKey'
删除一行数据中的某一列
delete 'tableName', 'RowKey', 'ColumnFamily:ColumnName'
在已创建的表添加列簇
alter 'tablename', {NAME=> 'fn'}
清空数据,并清除分区
truncate 'tableName'
仅清空数据
truncate_preserve 'tableName'
统计表数据总量
MR方式统计
$HBASE_HOME/bin/hbase org.apache.hadoop.hbase.mapreduce.RowCounter tablename'
HbaseShell方式统计
count 'table',{INTERVAL=>NUM,CACHE=>10000}
- INTERVAL 每次间隔多少显示一次
- CACHE 后台匹配每次统计多少,这个会实际影响统计速度,可以适当提升
创建表
创建表,并指定压缩格式
create 'ns:vt_date', {NAME => 'fn', VERSIONS=>1,COMPRESSION=>'snappy'}
参数详解
数据删除是否物理删除 KEEP_DELETED_CELLS
KEEP_DELETED_CELLS 的作用就是在major compaction发生的时候,决定要不要清理旧数据。这里需要注意一点,即便 KEEP_DELETED_CELLS 设置为True,数据仍然会因为过期而被清理(HBsae表中的TTL属性)。
创建表是添加参数:
修改表参数:
alter 'test110' , {NAME=>'fn',KEEP_DELETED_CELLS=> TRUE}
查看表结构:
hbase(main):008:0> desc 'test110'
Table test110 is ENABLED
test110
COLUMN FAMILIES DESCRIPTION
{NAME => 'fn', VERSIONS => '10', EVICT_BLOCKS_ON_CLOSE => 'false', NEW_VERSION_BEHAVIOR => 'false', KEEP_DELETED_CELLS => 'TRUE', CACHE_D
ATA_ON_WRITE => 'false', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', MIN_VERSIONS => '0', REPLICATION_SCOPE => '0', BLOOMFILTER => '
ROW', CACHE_INDEX_ON_WRITE => 'false', IN_MEMORY => 'false', CACHE_BLOOMS_ON_WRITE => 'false', PREFETCH_BLOCKS_ON_OPEN => 'false', COMPRE
SSION => 'GZ', BLOCKCACHE => 'true', BLOCKSIZE => '65536'}
1 row(s)
添加测试数据:
put 'test110','1','fn:a',1
put 'test110','1','fn:b',1
put 'test110','2','fn:a',1
put 'test110','2','fn:b',1
delete 'test110','1','fn:a'
delete 'test110','2','fn:a'
# 查看删除的数据,
hbase(main):022:0> scan 'test110',{RAW=>TRUE}
ROW COLUMN+CELL
1 column=fn:a, timestamp=1673332138815, type=Delete
1 column=fn:a, timestamp=1673332138815, value=1
1 column=fn:b, timestamp=1673332138955, value=1
2 column=fn:a, timestamp=1673332139075, type=Delete
2 column=fn:a, timestamp=1673332139075, value=1
2 column=fn:b, timestamp=1673332139899, value=1
REPLICATION_SCOPE 复制范围
HBase提供了跨级群同步的功能,本地集群的数据更新可以及时同步到其他集群。复制范围(replication scope)的参数默认为0,表示复制功能处于关闭状态。
查询
根据timestamp范围查询数据
# 说明
scan tableName,{TIMERANGE=>[starttime,endtime],LIMIT=>1}
# 样例
scan 'ns:vt',{TIMERANGE=>[1506700800000,1608479686000],LIMIT=>1}
RAW参数
开启Raw模式会返回包括已添加删除标记但是未实际删除的数据。
scan 'test110',{RAW=>TRUE}
Hbase Shell 返回中文
hbase(main):050:0>> get 't1','r1','f:c1:toString'
hbase(main):051:0> scan 'test', {FORMATTER => 'toString'}
hbase(main):052:0> scan 'test', {FORMATTER => 'toString',LIMIT=>1,COLUMN=>'f:c4'}
hbase(main):053:0> scan 'test', {FORMATTER_CLASS => 'org.apache.hadoop.hbase.util.Bytes', FORMATTER => 'toString'}
hbase(main):054:0> scan 'test', {FORMATTER_CLASS => 'org.apache.hadoop.hbase.util.Bytes', FORMATTER => 'toString', COLUMN=>'f:c4'}
hbase(main):004:0> scan 'test', {COLUMNS => ['f:c1:toString','f:c2:toString'] }
hbase(main):003:0> scan 'test', {COLUMNS => ['f:c1:c(org.apache.hadoop.hbase.util.Bytes).toString','f:c3:c(org.apache.hadoop.hbase.util.Bytes).toString'] }
hbase(main):055:0> scan 'test', {COLUMNS => ['f:c1:toString','f:c4:c(org.apache.hadoop.hbase.util.Bytes).toString'] }
hbase(main):058:0> get 'test','row-2','f:c2:toString'
对于Int型、Long型数值,支持toInt|toLong语法。不常用的语法这里就不再论述了。
查看Hbase Meta表
scan 'hbase:meta'
查询某个表某个列的数据
scan 'tableName',{COLUMN=>列族:列,LIMIT=>需要查看条数}
查询多版本数据
get 'test06262','woshikey1',{COLUMN=>'f2',VERSION=>10}
scan 'user_label',VERSIONS=>2
移动Region
手动移动Region
echo "move '9c5c9e1aa5f88739224e17dfd7602bb1','shxcb99.zh,16020,1513325294105" | hbase shell
参考:http://blog.csdn.net/knowledgeaaa/article/details/72844026
手动Split Region
# 语法:split 'regionName', 'splitKey'
手动出发Major Compaction
#语法:
#Compact all regions in a table:
hbase> major_compact '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'
强制删除Hbase表
1.删除zk中的数据(在装有zk的节点上执行)'
zookeeper-client -server localhost:2181'
[zk: localhost:2181(CONNECTED) 2] rmr /hbase/table/hbase_tablename'
2.删除HDFS上的数据'
su - hdfs'
hdfs dfs fs -rmr /hbase/data/default/hbase_tablename'
3.删除meta表信息,在meta表查询'
3.1使用hbase shell筛选rowkey'
echo "scan 'hbase:meta'" | hbase shell | grep hbase_tablename | awk -F 'column' '{print $1}' | sort | uniq'
3.2删除meta表中3.1的rowkey'
delete 'hbase:meta','rowkey','info:sn''
delete 'hbase:meta','rowkey','info:name''
4.重启Hbase(可选操作)