虚拟化容器,大数据,DBA,中间件,监控。

hbase问题排查思路

16 11月
作者:admin|分类:容器虚拟化

HBCK - HBCK检查什么?

(1)HBase Region一致性

  • 集群中所有region都被assign,而且deploy到唯一一台RegionServer上

  • 该region的状态在内存中、hbase:meta表中以及zookeeper这三个地方需要保持一致

(2)HBase 表完整性

  • 对于集群中任意一张表,每个rowkey都仅能存在于一个region区间

 

HBCK – 常用检查命令

  • ./bin/hbase hbck

  • ./bin/hbase hbck –details

  • ./bin/hbase hbck TableFoo TableBar

 

HBCK - 局部低危修复

  • -fixAssignments :修复没有assign、assign不正确或者同时assign到多台RegionServer的问题region。

  • -fixMeta :主要修复.regioninfo文件和hbase:meta元数据表的不一致。修复的原则是以HDFS文件为准:如果region在HDFS上存在,但在hbase.meta表中不存在,就会在hbase:meta表中添加一条记录。反之如果在HDFS上不存在,而在hbase:meta表中存在,就会将hbase:meta表中对应的记录删除。

 

HBCK –高危修复 

  • region区间overlap相关问题的修复属于高危修复操作,因为这类修复通常需要修改HDFS上的文件,有时甚至需要人工介入。

  • 对于这类高危修复操作,建议先执行hbck -details详细了解更多的问题细节,再执行相应的修复命令

  • -repair|-fix 命令强烈不建议生产线使用

 

HBCK –案例 

 

RIT处理套路

  • 套路一:pending_open(或pending_close)状态的region通常可以使用hbck命令修复

  • 套路二:failed_open (或failed_close)状态的region通常无法使用hbck命令修复

  • 套路三:failed_open (或failed_close)状态的region需检查日志确认region无法打开关闭的具体原因

  • 套路四:region处于RIT状态但hbck显示正常,把zk上的region-in-transaction节点相关region删除,重启master

 

HBase-日志分析

  • 监控分析只能告诉你可能是什么原因,间接原因

  • 日志分析才能告诉你问题的精确原因,最直接原因。

       一般的问题都能在日志中找到直接原因,再根据原因找答案。

  • 通过日志分析可以弄清楚事情的来龙去脉,监控不会告诉你那么多

【小结】

HBCK检查什么?

1、HBase Region一致性

a.集群所有region都被assign,且被deploy到唯一一台regionserver上

b.该region的状态在内存、hbase:meta表及zk上是否一致

2、HBase表完整性

对集群中任意一张表,每个rowkey都仅能存在于一个region区间

region不一致情况主要分为以下几种类型:

1、There is a hole in the region chain between X and Y.

这种情况是在hdfs层面上的,这个region的.regioninfo(meta)文件不存在,使用"-fixHdfsHole"进行修复;

-fixHdfsHole:修复region holes(空洞,某个区间没有region)问题

2、Found lingering reference file X.

这种情况基本上都是由于split reion时造成的,这些文件都是连接文件,使用"-fixReferenceFiles"进行修复;

3、Region X on HDFS,but not listed in hbase:meta or deployed on any region server.

这种情况下region的实际数据是存在的,但是在hbase:meta中不存在,使用"-fixMeta"进行信息同步修复;

-fixMeta:主要修复.regioninfo文件和hbase:meta元数据表的不一致。修复的原则是以HDFS文件为准:如果region在HDFS上存在,但在hbase.meta表中不存在,就会在hbase:meta表中添加一条记录。反之如果在HDFS上不存在,而在hbase:meta表中存在,就会将hbase:meta表中对应的记录删除

4、Region X not deployed on any region server.

这种情况下,region的hfile等数据都在,只是没有在任何region上online,使用"fixAssignments"进行修复。

-fixAssignments:修复没有assign、assign不正确或者同时assign到多台RegionServer的问题region。

5、使用"- repairHoles"进行修复。相当于-fixAssignments -fixMeta -fixHdfsHoles -fixHdfsOrphans

由于不一致的现象多种多样,原因也不尽相同,通过来说,regionserver crash、region在regionserver中迁移灯是基本原因。

 

步骤1. hbase hbck 检查输出所以ERROR信息,每个ERROR都会说明错误信息。

步骤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触发上线,当region开始重新open 上线的时候,会被重新分配到真实的RegionServer上 , 并更新meta表上对应的行信息。

 

 

 

  •  

  •  

浏览304 评论0
返回
目录
返回
首页
HBase 数据迁移方案介绍 Prometheus从入门到跑路