hbase hbck
1、简介
hbck工具可以检测hbase集群的region一致性和完整性,同时可以修复损坏的集群数据
工作模式两种:一致性检测只读模式,和多阶段修复模式
2、集群的一致性状态
1)region一致性
集群中所有region都被assign,且region在Master内存、ZK和hbase:meta表三个地方一致
2)表完整性
集群中的任意一张表,每个rowkey都仅能存在于一个region区间中
3、集群一致性状态检测
1)命令
hbase hbck
一般集群规模较大尽量不要直接执行,最好是对表进行扫描,直接在命令后加表名即可,多个表直接空格隔开
返回结果为Status: INCONSISTENT 或者Status: OK ;
如果region在move、split、merger时,执行命令是会显示有问题的,所以最好多次执行看
2)常用参数
-details 可以输出更详细的信息
-summary 只打印表和状态的的概要信息
-metaonly 只检查hbase:meta表的状态
4、修复参数
1)修复思路
修复后。使得Region的状态在。regioninfo文件、Master内存、ZK临时节点和hbase:meta表中数据一致
2)常用修复参数
? -fixAssignments 用来修复region的分配,assign问题,如果有region没有assign或者同时assign到多台RS上等问题
? -fixMeta 用来修复元数据,即HDFS上和元数据表中记录不一致问题,原则上是认为HDFS是正确的,即如果HDFS中有这个region,元数据表中没有,就在元数据表中添加,如果元数据表多了,就删除
? -noHdfsChecking 不从hdfs上检查region信息,即假设meta表示正确的
? -fixHdfsHoles 修复hdfs中的region黑洞,一般会和-fixAssignments -fixMeta参数一起用,或者使用
-repairHoles参数等同于 这三个参数同时使用
? -fixRITAssignment 修复长RIT region
? -repair 如果不知道用什么参数的话,就用这个参数,包含了常用的修复参数,也包含个高危操作
? -help 。。。。。
### 3)慎用参数
? -checkCorruptHFiles 检查所有Hfile,通过逐一打开Hfile来确定是否可用
? -sidelineCorruptHFiles 隔离损坏的Hfile,这个参数包含上一个check参数
? -fixTableLocks 删除已持有超长时间的table lock,默认是10分钟
? -fixOrphanedTableZnodes 如果表不存在,则在ZK中将ZNOde的状态设置disabled
?
5、修复案例
1)hbase.version文件丢失
1>现象
集群启动时候会加载hdfs上的这个文件,如果丢失,集群或者损坏,系统就不能启动
2>解决思路
hbase hbck -fixVersionFile
对hbase.version修复或者生成
|