HBase入门:shell 常用命令

HBase入门:shell 常用命令,第1张

HBase入门:shell 常用命令

目录

简介

Step1: 用shell连接你的Hbase

Step2:创建一个名为 test 的表,这个表只有一个 列族 为 liecuA。可以列出所有的表来检查创建情况,然后插入些值。

step3:查看表和向表中添加数据

step4:检查数据插入情况.

 解决编码问题

Step6:Get一行

Step7:disable 再 drop 这张表,清除刚刚的 *** 作

禁用表:disable  'test'

启用表:enable  'test'

删除除表:drop 'test'


简介

        因为时间关系(技术调研,主要目的快速,全面的了解一门技术是否符合业务场景需求,对于搭建上不会有过多时间投入,而且我们公司后期使用的Hbase是第三方云产品,运维监控各方面都比较成熟),因此从此篇博客开始记录的将是生产环境中常用命令,java api 和 配置参数。当然后期如果时间充裕也会将其他Hbase环境搭建起来,并输出相关博客记录

       为什么先从shell命令开始?因为一番了解之后,发现Hbase和MYSQL 数据库还是有很大不同的,起码在可视化管理工具上,目前还没做相关查询整理。不过初步了解上感觉Hbase和Redis更加相似,都可以通过shell命令进行管理。

Step1: 用shell连接你的Hbase
查询当前所在目录
命令:pwd   
用shell连接你的Hbase
命令:./bin/hbase shell
$ ./bin/hbase shell
Hbase Shell; enter 'help' for list of supported commands.
Type "exit" to leave the Hbase Shell
Version: 0.90.0, r1001068, Fri Sep 24 13:55:42 PDT 2010

hbase(main):001:0> 

Step2:创建一个名为 test 的表,这个表只有一个 列族 为 liecuA。可以列出所有的表来检查创建情况,然后插入些值。
命令:create 'test', 'liecuA'

命令效果图: 

原因:说明Hbase没有连接上Zookeeper,我们知道,Hbase可以使用内置的Zookeeper,也可以使用外部的Zookeeper,通过在配置文件hbase-env.sh

解决方案:由于我本地是没有启动zk的,因此需要先修改配置文件hbase-env.sh

命令:vi conf/hbase-env.sh

找到 #export Hbase_MANAGES_ZK=true 
#使用Hbase自带的zookeeper,将前面的注释“#”删除掉

  然后kill 掉hbase 进程后重新使用启动hbase,重新从Step1步骤开始!!

step3:查看表和向表中添加数据
hbase(main):003:0> list 'table'
test
1 row(s) in 0.0550 seconds
hbase(main):004:0> put 'test', 'row1', 'liecuA:name', '张三'
0 row(s) in 0.0560 seconds
hbase(main):005:0> put 'test', 'row2', 'liecuA:name', '李四'
0 row(s) in 0.0370 seconds
hbase(main):006:0> put 'test', 'row3', 'liecuA:name', '茉莉'
0 row(s) in 0.0450 seconds
hbase(main):006:0> put 'test', 'row3', 'liecuA:age', '18'
0 row(s) in 0.0450 seconds
以上我们分别插入了3行。第一个行key为row1, 列为 liecuA, 值是张三。Hbase中的列是由 列族前缀和列的名字组成的,以冒号间隔。例如这一行的列名就是name.
step4:检查数据插入情况.
hbase(main):008:0> scan 'test'
ROW                                                          COLUMN+CELL                                                                                                                                                                      
 row1                                                        column=liecuA:name, timestamp=2021-11-13T13:46:07.913, value=xE5xBCxA0xE4xB8x89                                                                                            
 row2                                                        column=liecuA:name, timestamp=2021-11-13T13:46:35.599, value=xE6x9Dx8ExE5x9Bx9B                                                                                            
 row3                                                        column=liecuA:age, timestamp=2021-11-13T13:47:22.570, value=18                                                                                                                   
 row3                                                        column=liecuA:name, timestamp=2021-11-13T13:46:50.066, value=xE8x8Cx89xE8x8Ex89                                                                                            
3 row(s)
Took 0.0454 seconds   
发现我们查到了相关的数据,但是hbase 中文乱码,无法直接显示,  查询_如何在 Hbase Shell 命令行正常查看十六进制编码的中文?
 解决编码问题

  方案一:scan 'test', {FORMATTER => 'toString'}

hbase(main):009:0>  scan 'test', {FORMATTER => 'toString'}
ROW                                                          COLUMN+CELL                                                                                                                                                                      
 row1                                                        column=liecuA:name, timestamp=2021-11-13T13:46:07.913, value=张三                                                                                                                  
 row2                                                        column=liecuA:name, timestamp=2021-11-13T13:46:35.599, value=李四                                                                                                                  
 row3                                                        column=liecuA:age, timestamp=2021-11-13T13:47:22.570, value=18                                                                                                                   
 row3                                                        column=liecuA:name, timestamp=2021-11-13T13:46:50.066, value=茉莉                                                                                                                  
3 row(s)
Took 0.0148 seconds   

  方案二:scan 'test', {FORMATTER => 'toString',LIMIT=>1,COLUMN=>'liecuA:name'}

hbase(main):010:0> scan 'test', {FORMATTER => 'toString',LIMIT=>1,COLUMN=>'liecuA:name'}
ROW                                                          COLUMN+CELL                                                                                                                                                                      
 row1                                                        column=liecuA:name, timestamp=2021-11-13T13:46:07.913, value=张三                                                                                                                  
1 row(s)
Took 0.0137 seconds                                                                                                                                                                                                                           
hbase(main):011:0> scan 'test', {FORMATTER => 'toString',COLUMN=>'liecuA:name'}
ROW                                                          COLUMN+CELL                                                                                                                                                                      
 row1                                                        column=liecuA:name, timestamp=2021-11-13T13:46:07.913, value=张三                                                                                                                  
 row2                                                        column=liecuA:name, timestamp=2021-11-13T13:46:35.599, value=李四                                                                                                                  
 row3                                                        column=liecuA:name, timestamp=2021-11-13T13:46:50.066, value=茉莉                                                                                                                  
3 row(s)
Took 0.0092 seconds 

 方案三:scan 'test', {FORMATTER_CLASS => 'org.apache.hadoop.hbase.util.Bytes', FORMATTER => 'toString'}

hbase(main):012:0> scan 'test', {FORMATTER_CLASS => 'org.apache.hadoop.hbase.util.Bytes', FORMATTER => 'toString'}
ROW                                                          COLUMN+CELL                                                                                                                                                                      
 row1                                                        column=liecuA:name, timestamp=2021-11-13T13:46:07.913, value=张三                                                                                                                  
 row2                                                        column=liecuA:name, timestamp=2021-11-13T13:46:35.599, value=李四                                                                                                                  
 row3                                                        column=liecuA:age, timestamp=2021-11-13T13:47:22.570, value=18                                                                                                                   
 row3                                                        column=liecuA:name, timestamp=2021-11-13T13:46:50.066, value=茉莉                                                                                                                  
3 row(s)
Took 0.0170 seconds 

方案四:scan 'test', {FORMATTER_CLASS => 'org.apache.hadoop.hbase.util.Bytes', FORMATTER => 'toString', COLUMN=>'liecuA:name'}

hbase(main):013:0> scan 'test', {FORMATTER_CLASS => 'org.apache.hadoop.hbase.util.Bytes', FORMATTER => 'toString', COLUMN=>'liecuA:name'}
ROW                                                          COLUMN+CELL                                                                                                                                                                      
 row1                                                        column=liecuA:name, timestamp=2021-11-13T13:46:07.913, value=张三                                                                                                                  
 row2                                                        column=liecuA:name, timestamp=2021-11-13T13:46:35.599, value=李四                                                                                                                  
 row3                                                        column=liecuA:name, timestamp=2021-11-13T13:46:50.066, value=茉莉                                                                                                                  
3 row(s)
Took 0.0076 seconds 

方案五:多列簇和多列有中文

scan 'test', {COLUMNS => ['liecuA:name:c(org.apache.hadoop.hbase.util.Bytes).toString','liecuA:nickname:c(org.apache.hadoop.hbase.util.Bytes).toString'] }

hbase(main):017:0> scan 'test', {COLUMNS => ['liecuA:name:c(org.apache.hadoop.hbase.util.Bytes).toString','liecuA:nickname:c(org.apache.hadoop.hbase.util.Bytes).toString'] }
ROW                                                          COLUMN+CELL                                                                                                                                                                      
 row1                                                        column=liecuA:name, timestamp=2021-11-13T13:46:07.913, value=张三                                                                                                                  
 row2                                                        column=liecuA:name, timestamp=2021-11-13T13:46:35.599, value=李四                                                                                                                  
 row3                                                        column=liecuA:name, timestamp=2021-11-13T13:46:50.066, value=茉莉                                                                                                                  
 row3                                                        column=liecuA:nickname, timestamp=2021-11-13T14:16:37.538, value=爱丽丝                                                                                                             
3 row(s)
Took 0.0098 seconds                                      

scan 'test', {COLUMNS => ['liecuA:name:toString','liecuA:nickname:toString'] }

hbase(main):018:0>  scan 'test', {COLUMNS => ['liecuA:name:toString','liecuA:nickname:toString'] }
ROW                                                          COLUMN+CELL                                                                                                                                                                      
 row1                                                        column=liecuA:name, timestamp=2021-11-13T13:46:07.913, value=张三                                                                                                                  
 row2                                                        column=liecuA:name, timestamp=2021-11-13T13:46:35.599, value=李四                                                                                                                  
 row3                                                        column=liecuA:name, timestamp=2021-11-13T13:46:50.066, value=茉莉                                                                                                                  
 row3                                                        column=liecuA:nickname, timestamp=2021-11-13T14:16:37.538, value=爱丽丝                                                                                                             
3 row(s)
Took 0.0109 seconds 
Step6:Get一行
hbase(main):021:0> get 'test','row1'
COLUMN                                                       CELL                                                                                                                                                                             
 liecuA:name                                                 timestamp=2021-11-13T13:46:07.913, value=xE5xBCxA0xE4xB8x89                                                                                                                
1 row(s)
Took 0.0364 seconds 
发现我们查到了相关的数据,依然有hbase 中文乱码,无法直接显示,  get查询_如何在 Hbase Shell 命令行正常查看十六进制编码的中文?

乱码解决可以参考scan查询的乱码解决方式

hbase(main):027:0> get 'test','row1',{COLUMNS => ['liecuA:name:toString','liecuA:nickname:toString'] }
COLUMN                                                       CELL                                                                                                                                                                             
 liecuA:name                                                 timestamp=2021-11-13T13:46:07.913, value=张三                                                                                                                                      
1 row(s)
Took 0.0149 seconds 
hbase(main):022:0> get 'test','row1','liecuA:name:toString'
COLUMN                                                       CELL                                                                                                                                                                             
 liecuA:name                                                 timestamp=2021-11-13T13:46:07.913, value=张三                                                                                                                                      
1 row(s)
Took 0.0164 seconds  
Step7:disable 再 drop 这张表,清除刚刚的 *** 作 禁用表:disable  'test'
hbase(main):028:0> disable 'test'
Took 0.4077 seconds                                                                                                                                                                                                                           
hbase(main):029:0> scan 'test'
ROW                                                          COLUMN+CELL                                                                                                                                                                      
org.apache.hadoop.hbase.TableNotEnabledException: test is disabled.
	at org.apache.hadoop.hbase.client.ConnectionImplementation.relocateRegion(ConnectionImplementation.java:770)
	at org.apache.hadoop.hbase.client.RpcRetryingCallerWithReadReplicas.getRegionLocations(RpcRetryingCallerWithReadReplicas.java:330)
	at org.apache.hadoop.hbase.client.ScannerCallable.prepare(ScannerCallable.java:139)
	at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas$RetryingRPC.prepare(ScannerCallableWithReplicas.java:408)
	at org.apache.hadoop.hbase.client.RpcRetryingCallerImpl.callWithRetries(RpcRetryingCallerImpl.java:105)
	at org.apache.hadoop.hbase.client.ResultBoundedCompletionService$QueueingFuture.run(ResultBoundedCompletionService.java:80)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

ERROR: Table test is disabled!

For usage try 'help "scan"'

Took 0.1201 seconds       
启用表:enable  'test'
hbase(main):030:0> enable 'test'
Took 0.6596 seconds                                                                                                                                                                                                                           
hbase(main):031:0> scan 'test'
ROW                                                          COLUMN+CELL                                                                                                                                                                      
 row1                                                        column=liecuA:name, timestamp=2021-11-13T13:46:07.913, value=xE5xBCxA0xE4xB8x89                                                                                            
 row2                                                        column=liecuA:name, timestamp=2021-11-13T13:46:35.599, value=xE6x9Dx8ExE5x9Bx9B                                                                                            
 row3                                                        column=liecuA:age, timestamp=2021-11-13T13:47:22.570, value=18                                                                                                                   
 row3                                                        column=liecuA:name, timestamp=2021-11-13T13:46:50.066, value=xE8x8Cx89xE8x8Ex89                                                                                            
 row3                                                        column=liecuA:nickname, timestamp=2021-11-13T14:16:37.538, value=xE7x88xB1xE4xB8xBDxE4xB8x9D                                                                            
3 row(s)
Took 0.0133 seconds  
 删除除表:drop 'test'
hbase(main):033:0> drop 'test'
Took 0.1459 seconds                                                                                                                                                                                                                           
hbase(main):034:0> enable 'test'

ERROR: Table test does not exist.

For usage try 'help "enable"'

Took 0.0055 seconds 

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5482677.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存