HBase 部分表无法写入数据的异常处理

来源:互联网 发布:fl软件下载 编辑:程序博客网 时间:2024/06/07 12:35

HBase 无法写入数据到某张表,服务状态均正常,并且可能只是某一张表或者部分表发生无法写入问题,那么此时可能是某一个或几个 RegionServer 出了问题,使其状态变更为 PENDING_CLOSE,从而无法写入数据,但是它们的服务状态可能仍然显示为正常。

注:这其中的一种可能的情况,不能证明所有的无法写入的问题均来自于此。

1. 检查 Regions in Transition

cloudera manager为例

登录cloudera manager -> HBase -> Master -> Master (活动) -> HBase WEB UI, 进入Master-status页面。

往下拉,找到Regions in Transition节点(正常则没有),如果看到如下信息(server 信息已被屏蔽):

Regions in Transition

那么说明有一个 Region 处于 PENDING_CLOSE 状态,如果不能写入的表处于这个 Region 上,那么则可能导致数据无法正常写入(写入的 key 处于这个 region)。

Region-In-Transition 说的是 Region 变迁机制,实际上是指在一次特定操作行为中 Region 状态的变迁,其状态包括:OPEN -> PENDING_CLOSE -> CLOSING -> CLOSED。

摘抄于 http://hbasefly.com/2016/09/08/hbase-rit/,更多 Region-In-Trasition 相关内容请阅读原文。

2. 重启 Region

解决的最简单的办法就是重启了,毕竟网管大法好。

依次进入cloudera manager -> HBase -> RegionServer,在右侧的列表中找到出问题的 RegionServer(主机名与上图中 server 相等),点击 RegionServer进入 Region 管理页面,然后重启该 Region(因涉及到公司服务器相关信息,所以就不放截图了)。

3. RegionServer 检查

按照第1步再次进入Master-status页面,往下拉,找到Tasks节点,可以看到如下信息:

Task

这是在完成第2步重启 Region 后的任务信息,继续下拉,发现无法找到 Regions in Transition 节点(这里仅有一个 RegionServer 除了问题,所以正常后便消失了),此时说明 RegionServer 恢复正常。

4. 数据一致性检查

Resion 发生问题后,最担心的莫过于数据是否仍然保持一致性,此时可登录对应集群的任一服务器,输入如下命令:

sudo -u hbase hbase hbck

输出末尾信息如下(server 名称被屏蔽):

··· 省略    Deployed on:  xxxx05.xxxx.xxxx,60020,1493260775900Table dba_test is okay.    Number of regions: 5    Deployed on:  xxxx04.xxxx.xxxx,60020,1493260776802 xxxx05.xxxx.xxxx,60020,1493260776083 xxxx06.xxxx.xxxx,60020,1493260776047 xxxx08.xxxx.xxxx,60020,14932607762780 inconsistencies detected.

从最后一行的输出可看到,没有存在数据不一致的情况。

5. 完成

尝试重新写入数据,一切正常。

6. 参考资料

  • DBA 的现场指导
  • http://hbasefly.com/2016/09/08/hbase-rit/