HbaseShell命令

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
实时数仓Hologres,5000CU*H 100GB 3个月
简介: HbaseShell命令

命名空间

查看指定命名空间表

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

image-20230222171303985

image-20230222171311128

参考: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(可选操作)
相关实践学习
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
云数据库HBase版使用教程
  相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情: https://cn.aliyun.com/product/hbase   ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
Shell 分布式数据库 Apache
Hbase常用shell操作
Hbase常用shell操作
410 1
|
6月前
|
分布式计算 Hadoop Shell
|
3月前
|
存储 Shell 分布式数据库
Hbase 的基本shell 命令
Hbase 的基本shell 命令
|
Shell 分布式数据库 Hbase
95 hbase命令
95 hbase命令
55 0
95 hbase命令
|
Shell 分布式数据库 数据库
Hbase Shell操作
Hbase Shell操作
173 0
|
分布式计算 Hadoop Shell
Hbase-shell操作
Hbase-shell操作
Hbase-shell操作
|
SQL 存储 Java
HBase伪分布式、命令_1 | 学习笔记
快速学习 HBase 伪分布式、命令_1
121 0
HBase伪分布式、命令_1 | 学习笔记
|
XML 负载均衡 Java
HBase 伪分布式、命令_4 | 学习笔记
快速学习 HBase 伪分布式、命令_4
198 0
HBase 伪分布式、命令_4 | 学习笔记
|
存储 Java 关系型数据库
常用的HBase Shell操作
常用的HBase Shell操作
269 0
常用的HBase Shell操作
|
SQL 缓存 大数据
HBase伪分布式、命令_3 | 学习笔记
快速学习 HBase伪分布式、命令_3
134 0