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

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,1493260775900
Table 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,1493260776278
0 inconsistencies detected.

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

5. 完成

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

6. 参考资料

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值