1、问题描述:
hbase集群搭建后,曾经读取hbase数据接口一直很稳定,突然有一天读取hbase数据的接口服务,12-18小时就出现outoffmemory,导致tomcat宕机,用dump memory 查看堆栈发现在读取某个表时异常,最初以为是内存问题,尝试修改tomcat jvm,依然不解决问题,查看了各种原因以及百度,解决方案各种各样,但是都没有解决我的问题,最后怀疑是hbase表的问题,尝试使用hbase hbck修复,最终问题得以解决
2、修复步骤
步骤1. hbase hbck 检查输出所以ERROR信息,每个ERROR都会说明错误信息。
6 inconsistencies detected
步骤2. hbase hbck -fixTableOrphones 先修复tableinfo缺失问题,根据内存cache或者hdfs table 目录结构,重新生成tableinfo文件。
步骤3. hbase hbck -fixHdfsOrphones 修复regioninfo缺失问题,根据region目录下的hfile重新生成regioninfo文件
步骤4. hbase hbck -fixHdfsOverlaps 修复region重叠问题,merge重叠的region为一个region目录,并从新生成一个regioninfo
步骤5. hbase hbck -fixHdfsHoles 修复region缺失,利用缺失的rowkey范围边界,生成新的region目录以及regioninfo填补这个空洞。
步骤6. hbase hbck -fixMeta 修复meta表信息,利用regioninfo信息,重新生成对应meta row填写到meta表中,并为其填写默认的分配regionserver
步骤7. hbase hbck -fixAssignment 把这些offline的region触发上线,当regio

博客描述了一次HBase集群在读取数据时遇到的OutofMemory问题,经过一系列排查,最终确定为HBase表的不一致性导致。通过使用hbasehbck工具的多个修复命令,如修复tableinfo、regioninfo、region重叠和缺失等问题,成功解决了问题。修复过程包括禁用表、执行修复命令和重新启用表。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



