目录
简介
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 'helpStep2:创建一个名为 test 的表,这个表只有一个 列族 为 liecuA。可以列出所有的表来检查创建情况,然后插入些值。' 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>
命令: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 secondsStep6: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 secondsStep7: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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)