Hbase 之 Shell 初级
Posted Hbase工作笔记
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hbase 之 Shell 初级相关的知识,希望对你有一定的参考价值。
再不点蓝字关注,机会就要飞走了哦!
一. 简介
学习Hbase最直观的方式无非是通过Shell命令,本文作为基础入门篇总结回顾一下常用 Hbase Shell 命令的使用方法,后续会为大家介绍更多中高级命令的使用。
首先在搭建好Hbase集群之后,我们进入 Hbase Shell 命令行,如下:
$ ./bin/hbase shell 18/04/16 21:33:52 INFO Configuration.deprecation: hadoop.native.lib is deprecated. Instead, use io.native.lib.available HBase Shell; enter 'help<RETURN>' for list of supported commands. Type "exit<RETURN>" to leave the HBase Shell Version 1.2.0-cdh5.7.0, rUnknown, Wed Mar 23 11:39:14 PDT 2016 hbase(main):001:0>
如果想看到更详细的信息,可以以Debug的方式进入,如下:
$ ./bin/hbase shell -d
在 Hbase Shell 命令行我们输入 help 就会返回Shell的命令列表和选项,如下:
hbase(main):001:0> help HBase Shell, version 1.2.0-cdh5.7.0, rUnknown, Wed Mar 23 11:39:14 PDT 2016 Type 'help "COMMAND"', (e.g. 'help "get"' -- the quotes are necessary) for help on a specific command. Commands are grouped. Type 'help "COMMAND_GROUP"', (e.g. 'help "general"') for help on a command group. COMMAND GROUPS: Group name: general Commands: status, table_help, version, whoami Group name: ddl Commands: alter, alter_async, alter_status, create, describe, disable, disable_all, drop, drop_all, enable, enable_all, exists, get_table, is_disabled, is_enabled, list, locate_region, show_filters Group name: namespace Commands: alter_namespace, create_namespace, describe_namespace, drop_namespace, list_namespace, list_namespace_tables Group name: dml Commands: append, count, delete, deleteall, get, get_counter, get_splits, incr, put, scan, truncate, truncate_preserve 略...
可以看到,Shell 命令以默认以Group的方式进行定义划分,本文我们先讲解一下部分 Hbase 初级 Shell 命令的使用,后续将陆续展开详细介绍。
输入help ‘command’ (e.g. help “get”)可查看具体某一命令的使用方法;
输入help ‘command_group’(help “general”)可查看某一Group下命令的使用细则(不区分单引号双引号)。
例如想查看命令 ‘whoami’ 如何使用,输入如下指令即可:
hbase(main):007:0> help "whoami" Show the current hbase user. Syntax : whoami For example: hbase> whoami
二. Shell Api 介绍
本文先主要举例详细讲解一下 general,ddl 组下 shell 命令的使用细则(文中代码块都可向右滑动进行查看)。
Group name: general
1. status
显示服务器的状态,例如:
hbase(main):009:0> status 1 active master, 1 backup masters, 10 servers, 0 dead, 86.3000 average load
还有三个开关:
status ‘simple’
简述当前集群状态(Region 级),如下:
hbase(main):012:0> status 'simple' active master: yq-hadoop57:60000 1520300829133 1 backup masters yq-hadoop29:60000 1520429670888 10 live servers yq-hadoop184133:60020 1521785119328 requestsPerSecond=19.0, numberOfOnlineRegions=85, usedHeapMB=1727, maxHeapMB=3959, numberOfStores=100, numberOfStorefiles=128, storefileUncompressedSizeMB=191042, storefileSizeMB=44354, compressionRatio=0.2322, memstoreSizeMB=0, storefileIndexSizeMB=0, readRequestsCount=164988634, writeRequestsCount=10089338, rootIndexSizeKB=2212, totalStaticIndexSizeKB=54385, totalStaticBloomSizeKB=8799, totalCompactingKVs=276327149, currentCompactedKVs=276327149, compactionProgressPct=1.0, coprocessors=[CubeVisitService, Observer] 0 dead servers Aggregate load: 698, regions: 863
status ‘summary’
默认值,同 status,如下:
hbase(main):014:0> status 'summary' 1 active master, 1 backup masters, 10 servers, 0 dead, 86.3000 average load
status ‘detailed’
详细列出了当前集群状态,具体到表级,如:
"monitor_base_test,000152331479433158,1523413164030.df66f39d1868c19a27a588da8abb960c." numberOfStores=1, numberOfStorefiles=1, storefileUncompressedSizeMB=3595, lastMajorCompactionTimestamp=1523413165358, storefileSizeMB=3596, compressionRatio=1.0003, memstoreSizeMB=0, storefileIndexSizeMB=0, readRequestsCount=1166147, writeRequestsCount=213992, rootIndexSizeKB=2, totalStaticIndexSizeKB=3295, totalStaticBloomSizeKB=1792, totalCompactingKVs=16593376, currentCompactedKVs=16593376, compactionProgressPct=1.0, completeSequenceId=-1, dataLocality=1.0
另外还可以通过如下命令查看集群 Replication 状态:
hbase> status 'replication' hbase> status 'replication', 'source' hbase> status 'replication', 'sink'
2. whoami
显示Hbase当前的用户,如下:
hbase(main):022:0> whoami root (auth:SIMPLE) groups: root
3. version
显示Hbase的版本,如下:
hbase(main):023:0> version 1.2.0-cdh5.7.0, rUnknown, Wed Mar 23 11:39:14 PDT 2016
4. table_help
截至0.96,我们可以为一个表创建引用,也可以将现有的表指向某一引用,然后通过该引用对表进行增删改查操作,不必再写冗长的表名。如:
hbase> t = create 'test', 'cf' hbase> t = get_table 'test' t.put 'r', 'cf:q', 'v'
Group name: ddl
1. list
列出Hbase中已有的表,语法如下:
hbase> list hbase> list 'abc.*' hbase> list 'ns:abc.*' hbase> list 'ns:.*'
且支持正则匹配,如下:
hbase(main):054:0> list 'monitor_bas.*' TABLE monitor_base monitor_base_2 monitor_base_test monitor_base_test_snappy 4 row(s) in 0.0040 seconds
2. create
创建一张新表,创建表必须指定一个列族,语法如下:
a. 创建表 t1,指定列族 f1,f2,默认 namespace=defaulthbase(main):005:0> create 't1', {NAME => 'f1'}, {NAME => 'f2'}, {NAME => 'f3'} 可简写为:hbase(main):005:0> create 't1', 'f1', 'f2'b. 指定表属性,如指定最大版本数(基于列族):hbase(main):005:0> create 'ns1:t1', {NAME => 'f1', VERSIONS => 5}c. 同时指定多个属性hbase(main):005:0> create 't1', {NAME => 'f1', VERSIONS => 1, TTL => 2592000, BLOCKCACHE => true}注:关于Hbase建表时所指定的属性还有很多,其中有基于列族指定的,也有基于整张表进行指定的,更详细的介绍我们后面会专门写篇公众号文章进行阐述,这里就不再赘述了。
3. exists
建好表之后,我们可以即刻检查一下该表是否存在,语法如下:
hbase> exists 't1' hbase> exists 'ns1:t1' 例: hbase(main):009:0> exists 't1' Table t1 does exist 0 row(s) in 0.2470 seconds可见,我们刚才建的t1表已经存在,如果Hbase中表数量比较少时我们可以通过list命令查看。
4. describe
通过该命令可以查看表的描述信息。
hbase> describe 't1' hbase> describe 'ns1:t1' 可简写为: hbase> desc 't1' hbase> desc 'ns1:t1' 例: hbase(main):011:0> desc 't1' Table t1 is ENABLED t1 COLUMN FAMILIES DESCRIPTION {NAME => 'f1', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'ROW', REPLICATION_SCOPE => '0', VERSIONS => '1', COMPRESSION => 'NONE', MIN_VERSIONS => '0', TTL => 'FOREVER', KEEP_DELETED_CELLS => 'FALSE', BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'true'} {NAME => 'f2', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'ROW', REPLICATION_SCOPE => '0', VERSIONS => '1', COMPRESSION => 'NONE', MIN_VERSIONS => '0', TTL => 'FOREVER', KEEP_DELETED_CELLS => 'FALSE', BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'true'} 2 row(s) in 0.0620 seconds
5. is_enabled
检查表是否启用。
hbase> is_enabled 't1' hbase> is_enabled 'ns1:t1' 例: hbase(main):014:0> is_enabled 't1' true 0 row(s) in 0.0240 seconds
6. is_disabled
检查表是否被禁用。
hbase> is_disabled 't1' hbase> is_disabled 'ns1:t1' 例: hbase(main):017:0> is_disabled 't1' false 0 row(s) in 0.0170 seconds
7. show_filters
显示Hbase中的过滤器列表。
hbase(main):021:0> show_filters ColumnPrefixFilter TimestampsFilter PageFilter MultipleColumnPrefixFilter 略... 注:hbase 的过滤器有很多,之后我们会进行详细介绍,此处不再赘述。
8. alter
通过该命令,可以对Hbase表和列族就行修改,如新增一个列族、修改表属性,增加协处理器等等,更多操作后续我们会专门整理为文章进行详细阐述,此处只进行入门简述。
a. 单列族,改变表t1最大版本数为1:hbase> alter 't1', NAME => 'f1', VERSIONS => 1b. 多列族同时修改,{} 括起来hbase> alter 't1', 'f1', {NAME => 'f2', IN_MEMORY => true}, {NAME => 'f3', VERSIONS => 5}例: hbase(main):029:0> alter 't1', NAME => 'f1', VERSIONS => 1 Updating all regions with the new schema... 0/1 regions updated. 1/1 regions updated. Done. 0 row(s) in 3.7570 seconds
9. alter_status
可以给出alter命令的状态。
hbase> alter_status 't1' hbase> alter_status 'ns1:t1' 例: hbase(main):030:0> alter_status 't1' 1/1 regions updated. Done.
10. alter_async
不管alter是否完成,这个命令不等待所有region获得模式的改变。
例:hbase(main):004:0> alter_async 't1',{NAME => 'f1',TTL => '10000'} 0 row(s) in 1.8540 seconds注:可通过alter_status查出alter命令的状态。
11. disable
为了删除或更改而禁用表,语法如下:
hbase> disable 't1' hbase> disable 'ns1:t1'
12. disable_all
可通过正则匹配表达式禁用表,语法如下:
hbase> disable_all 't.*' hbase> disable_all 'ns:t.*' hbase> disable_all 'ns:.*'注意小数点。
13. enable
启用被禁用的表,语法如下:
hbase> enable 't1' hbase> enable 'ns1:t1'
14. enable_all
启用匹配正则表达式的所有表,语法如下:
hbase> enable_all 't.*' hbase> enable_all 'ns:t.*' hbase> enable_all 'ns:.*'注意小数点。
15. drop
删除表,前提是要disable表,语法如下:
hbase> drop 't1' hbase> drop 'ns1:t1'
16. drop_all
删除匹配正则表达式的所有表,语法如下:
hbase> drop_all 't.*' hbase> drop_all 'ns:t.*' hbase> drop_all 'ns:.*'注意小数点。
17. locate_region
指定表和rowkey返回该rowkey所在的region信息,语法如下:
hbase> locate_region 'tableName', 'key0' 例: hbase(main):030:0> locate_region 'xcar_suggest_item_test','r1' HOST REGION yq-hadoop184194:60020 {ENCODED => 6f5e22b9bef0f537e0e8a086cbcb03b5, NAME => 'xcar_suggest_item_test,,1523181823333.6f5e22b9bef0f537e0e8a086cbcb03b5.', STARTKEY => '', ENDKEY => ''} 1 row(s) in 0.0100 seconds
18. get_table
返回给定表的一个引用,可通过该引用操作表,语法如下:
hbase> t1 = get_table 't1' hbase> t1 = get_table 'ns1:t1'
(未完待续 。。。)
分享是一种美德!
想对你说:“
昨天越来越多,明天越来越少,这就叫人生。
你之所以觉得时间一年比一年过得快,
是因为时间对你一年比一年重要。
别因为害怕孤单而凑合着相拥,
也别因为一时的别无选择而将就的活着,
总要有一段路,需要你独自走过。
愿你是阳光,明媚不忧伤。”
Hbase|Kylin|Hive|Impala|Spark|Phoenix ect.
虽没官方认证
将最好的祝福送给正在阅读的你,感恩!
以上是关于Hbase 之 Shell 初级的主要内容,如果未能解决你的问题,请参考以下文章
[AndroidStudio]_[初级]_[配置自动完成的代码片段]
[AndroidStudio]_[初级]_[配置自动完成的代码片段]
[AndroidStudio]_[初级]_[配置自动完成的代码片段]