HBase Tools 介绍 ~ 持续更新!!
Canary
Read
Canary 工具可以对HBase集群的表进行”canary-test”。该检查支持一下三种模式:
- region mode: 从每个region的每个column-family上读取一行,如果都OK,那么测试通过。该模式是默认模式!
- regionserver mode: 从每个RegionServers的所有Region中随机选择一行读取,如果OK,那么测试通过。
- zookeeper mode: 读取HBase的Znode节点,如果读取正常,那么测试通过。
以下是调用示例:
1 | 所有table以region mode执行一次检查 |
Write
默认情况写入检查时不开启的,通过-writeSniffing配置可以开启写入检查。
进行写入检查时,canary进程会写入一张指定的表,这张表由Canary进程创建,并且该表的分区分布在所有的region servers上。
1 | 打开写入检查,默认情况下,写入表为hbase:canary |
Cloudera
cm页面集成了canary的配置项,默认情况下该配置不打开,并且不能调整Canary参数。
1 | Cloudera 运行Canary的命令如下: |
RegionSplitter
手工Region预分区工具(参考),通过这个工具可以手工创建一张指定分区数目的新表,用户可以指定不同的Key策略,包括:HexStringSplit、DecimalStringSplit、UniformSplit
1 | hbase regionsplitter {table name} HexStringSplit -c 10 -f cf1:cf2 |
在hbase shell 中可以使用 split 命令和 merge 命令进行强制region拆分、合并操作。
关于 Region 拆分合并的知识可以参考这篇blog
Health Checker
HBase在HBASE-7351中提供了Health Checker机制,让HBASE服务通过sh调用的方式来确认master、regionserver等服务是否可用。
1 |
|
官方提供hbase-examples/src/main/sh/healthcheck/healthcheck.sh脚本作为设计checker脚本的参考。
Driver
HBase 提供一些便利的Driver Class,这些Class可以通过bin/hbase命令来运行。
通过${HBASE_HOME}/bin/hbase org.apache.hadoop.hbase.mapreduce.UtilityName可以运行以下driver类
UtilityName | 说明 | 示例 |
---|---|---|
LoadIncrementalHFiles | 将本地HFILE文件导入到HBase | |
CopyTable | 将一张表从一个HBase导出到另一个HBase | |
Export | 将表导出到HDFS中 | |
Import | 将表导入到HBase中 | |
ImportTsv | 将CSV导入到HBase中 | |
RowCounter | 统计表的行数 | |
CellCounter | 统计表的cell数目 | |
replication.VerifyReplication | 比较两个HBase集群的表 |
hbck 和 HBCK2
hbck是一个完整性、一致性工具,在hbase-1.x 版本之前该工具可以诊断表的完整性、同时可以用于修复不一致表。hbase-2.x版本以后,该工具被HBCK2取代,只能只读运行,不提供修复功能。
使用以下命令可以进行HBase表的一致性检查:
1 | 全表检查 |
官方文档强烈不建议使用hbck去修复hbase 2.x的不一致,原因是hbck会绕过Master直接访问HDFS上的HFile文件,可能造成更严重的不一致。
参考hbck的深入介绍:hbck In Depth
HBCK2 工具是一个独立于HBase的项目,其jar包不随HBase一同发布需要用户从源码进行编译。
由于 CDH 6.1.0 是基于 HBase 2.1.0 开发,HBCK2 说明文档中提及该工具不支持 2.0.3 和 2.1.1 之前的HBase版本,HBase只在3.x的官方文档中提到了这个工具。所以该工具用在hbase 2.1.0-CDH 6.1.0 上也不一定靠谱。
HBCK2提供了以下功能:
- bypass:释放一个或者多个卡住的procedure
- assigns/unassigns:对应region,这两个操作在 hbase shell 中也可以运行。
- setTableState:设定表的状态,可以将表设定为ENABLED, DISABLED, DISABLING, ENABLING
- serverCrashProcedures:????这个不知道干啥用的
参考这篇blog说明了HBCK2的一些常见用法( 基本上是HBCK2 说明文档的翻译):HBase 2.0之修复工具HBCK2运维指南
HFile Tool
使用HFile Tool可以查看HBase在HDFS上的hfile文件的内容
1 | hbase hfile -v -f hdfs://nameservice1/hbase/data/default/TestTable/d051c004ff7f7441eb7f89eed9136c57/info0/c3d62dcd7c3f4b8dacfc9688b850d723 |
WAL Tools
主要是用来查看hbase的 WAL 日志,以及拆分WAL日志
1 | hbase org.apache.hadoop.hbase.regionserver.wal.FSHLog --dump hdfs://nameservice1/hbase/MasterProcWALs/pv2-00000000000000000048.log |
hbase wal 命令同样可以用来查看wal日志
CopyTable
表备份工具,可以跨集群备份,也可以同一个集群备份。
HashTable/SyncTable
表的同步工具,两张表可以运行在不同的集群上。使用这个工具可以进行表的增量备份。
Export
支持Mapreduce-based和Endpoint-based两种方式进行Export。
1 | Mapreduce-based Export |
ImportTsv、CompleteBulkLoad、Import
这三个都是批量导入工具。