1 工具下载
请联系售后技术支持下载
2 环境安装
使用方式依然沿袭dstool工具,将dstools.tar.gz解压到TDH-Client中,生成dstools目录,结构和老版本dstools工具类似,包括lib和bin目录,较初始9.0版本hbase可能客户端还没有添加相关接口,所以需要将hbase-client-transwarp-9.0.0.jar替换到TDH-Client中,处理完毕后重新source init.sh
较老9.0TDH-Client有可能运行有问题可参考Q&A修改客户端hbase-env.sh中的内容
3 使用方式
3.1 dstool一键检测和修复
#不加参数默认全集群检测(谨慎使用,后果自负),也可以加多个表名处理多张表,需注意如果非default表名需要带上namespace
sh runDSTools.sh
3.2 hbck2单命令执行,可以自行-help查看细节
# 查看帮助
sh run_hbck2.sh -help
# -o表示强制assign
sh run_hbck2.sh assigns [-o]
# 和assign相反
sh run_hbck2.sh unassigns [-o]
#将正在执行的procedure中止掉
sh run_hbck2.sh bypass
#对指定表的hdfs文件进行检测和修复
sh run_hbck2.sh filesystem [-f]
#触发服务端fixHoles和fixOverLaps,这里不指定表,是否有region出现holes和overlap由CatalogJanitor定时扫描,这里只是一个触发接口
sh run_hbck2.sh fixMeta
#对一些unkonwnserver或者dead server执行serverScrash用以释放被他们占用的region
sh run_hbck2.sh scheduleRecoveries
#对所有unknownserver执行serverScrash,一般不需要执行,hbase会定时检测并执行的
sh run_hbck2.sh recoverUnknown
#列出所有正在执行的procedure
sh run_hbck2.sh listProcedure
#修复指定表的rit,-fixStuck修复释放卡住的procedure
sh run_hbck2.sh fixRit [-fixStuck]
#将指定region从指定servername中unassign,该命令只用来配合一些异常情况处理
sh run_hbck2.sh unassignsForRS
#打印该表当前所有region rit和procedure卡住的详细信息
sh run_hbck2.sh details
4 一键修复执行流程和执行结果分析
修复流程包括:
a、修复并检测meta表,如果meta表有问题,而且修复失败则停下来;
b、修复hdfs目录存在但是meta表和内存中确实的region;
c、修复tabledesc文件丢失;
d、修复和诊断region rit。
对于d步,修复诊断rit可能出现的原因及排除方式有:
a、"detect no TRSP but region on opening/closing, should try assign"
重新assign
b、"TRSP waiting all time please check regionServer, probable Cause: 1. region open/close on rs stuck, should restart rs;2. rs update transitRegionState to hmaster fail, should unassignsForRS and bypass open/close procedure"
openRegionProcedure或者closeRegionProcedure执行卡住了,需要排查regionserver和hmaster日志排查原因处理;
c、"TRSP waiting timeout, dispatcher procedure fail or rs open/close region fail, please check hmaster and regionServer’s log"
这个是TRSP执行失败了不端重试,需要排查日志,hmaster日志会有明确失败原因
d、"TRSP running all time and no subProcedure, maybe suspend by events"和 "TRSP lock by other procedure"
这两种情况都需要依赖其它procedure或者时间执行完。可以bypass掉重新assign试试
Q&A
场景一
报错Error: Password file not found: xxxxx/etc/hyperbase2/conf/jmxremote.password
解决方案
TDH-Client 里面hbase-env.sh 相关jmx内容注释掉,如上。
场景二
报错Could not find agent library xxx/libjvm_agent.so xxx No such file or directory
解决方案
HBase高版本不再依赖libjvm_agent.so,这个主要是TDH-Client里面可能包含多个版本的Hyperbase & Hadoop 依赖包,导致加载到低版本的依赖包,建议检查依赖,重新下载TDH-Client,只保留高版本(transwarp-9.x)的依赖包
还有一个种可能,就是classpath 的重复生成导致乱用。建议重开窗口运行。source init.sh