上海古都建筑设计集团,上海办公室装修设计公司,上海装修公司高质量的内容分享社区,上海装修公司我们不是内容生产者,我们只是上海办公室装修设计公司内容的搬运工平台

hbase2.x hbck2处理region方案(长期openingclosingoffline,Report Region Holes,report Unkown server)等

guduadmin14小时前

hbase2.x RIT(region in transition)背景知识

在hbase1.x中transition是令广大大数据运维人员头疼的一个话题,因为,region 的状态转移涉及到了三个核心组件,分别为:hbase master,zookeeper和hbase 的regionserver,这三个组件中的某一个region的状态都是一致的情况下,这个region 才算是正常,状态转移过程及其复杂,hbase 集群很容易出现RIT。

好消息是,hbase2.x中,把zookeeper 中的状态取消了,region 的状态直接在master 和 regionserver 直接变化。

在hbase2.x 中几乎所有的集群操作都是通过procedure进行的,这也就意味着,产生异常的过程大部分都是在proceduer中,比如region opening 过程卡死或者closing 过程卡死,最终都会导致region 的状态有问题,即产生region in transition。

好消息是,hbase2.x中有个工具HBCK2,这个工具可不是简单的hbase1.x中hbck 的升级,变化有点大,详细变化请参考帮助文档(https://github.com/apache/hbase-operator-tools/tree/master/hbase-hbck2)。这个工具的工作实际就是修复各种不正常的procedure。(本文已提供工具免费下载)

一.RIT region长期处于OPEING 

如果RIT中的region长期处于opening状态,按以下步骤排查:

1.查看该region对应的regionserver日志,搜索该region名字,看有没有报错

1)如果有报错,提示有坏的hfile文件(如下图),hbase2.x hbck2处理region方案(长期openingclosingoffline,Report Region Holes,report Unkown server)等,第1张

则把hfile文件mv走,mv hfile之后一般情况下该region会自动好,如果还是处于RIT,就先bypass掉相关procedure,然后再unassign,再assign一下

hbase2.x hbck2处理region方案(长期openingclosingoffline,Report Region Holes,report Unkown server)等,第2张

hbase2.x hbck2处理region方案(长期openingclosingoffline,Report Region Holes,report Unkown server)等,第3张

hbase2.x hbck2处理region方案(长期openingclosingoffline,Report Region Holes,report Unkown server)等,第4张

2)如果有报错The new max sequence id 1 is less than the max sequence id

hbase2.x hbck2处理region方案(长期openingclosingoffline,Report Region Holes,report Unkown server)等,第5张

方法1:disable 表,再enable 表

方法2:

对于从hbase1迁移到hbase2的表,如果表的DATA_BLOCK_ENCODING是PREFIX_TREE,由于PREFIX_TREE在hbase2里已废弃,所以需要修改

hbase2.x hbck2处理region方案(长期openingclosingoffline,Report Region Holes,report Unkown server)等,第6张

2.如果该region对应的regionserver日志中没有明显错误,就先bypass掉相关procedure,然后再把region设置为OFFLINE,再assign一下

hbase2.x hbck2处理region方案(长期openingclosingoffline,Report Region Holes,report Unkown server)等,第7张

hbase2.x hbck2处理region方案(长期openingclosingoffline,Report Region Holes,report Unkown server)等,第8张

hbase2.x hbck2处理region方案(长期openingclosingoffline,Report Region Holes,report Unkown server)等,第9张

hbase2.x hbck2处理region方案(长期openingclosingoffline,Report Region Holes,report Unkown server)等,第10张

hbase2.x hbck2处理region方案(长期openingclosingoffline,Report Region Holes,report Unkown server)等,第11张

如果还是不行,就先bypass掉相关procedure,然后再把region状态设为OFFLINE,再unassign,再assign

hbase2.x hbck2处理region方案(长期openingclosingoffline,Report Region Holes,report Unkown server)等,第12张

hbase2.x hbck2处理region方案(长期openingclosingoffline,Report Region Holes,report Unkown server)等,第13张

hbase2.x hbck2处理region方案(长期openingclosingoffline,Report Region Holes,report Unkown server)等,第14张

hbase2.x hbck2处理region方案(长期openingclosingoffline,Report Region Holes,report Unkown server)等,第15张

二.RIT region长期处于CLOSING

1.先bypass相关procedure,再把region状态设置为CLOSED,然后再assign

hbase2.x hbck2处理region方案(长期openingclosingoffline,Report Region Holes,report Unkown server)等,第16张

hbase hbck -j hbase-hbck2-1.0.0.0-SNAPSHOT.jar setRegionState region名字 CLOSED

hbase2.x hbck2处理region方案(长期openingclosingoffline,Report Region Holes,report Unkown server)等,第17张

三.RIT region长期处于OFFLINE

把region assign

hbase2.x hbck2处理region方案(长期openingclosingoffline,Report Region Holes,report Unkown server)等,第18张

四.某个hbase表已经删除,但是还有这个表相关的region处于RIT

处理步骤:

1.bypass 该region相关的procedure

2.从meta表查看该region的信息

3.deleteall从meta表删除该region

hbase2.x hbck2处理region方案(长期openingclosingoffline,Report Region Holes,report Unkown server)等,第19张

4.切换hmaster

hbase UI上的RIT应该是从meta表里拿的状态为OPENING、OFFLINE等中间状态的region。从meta表里删了的,切了hmaster之后就没有了;状态改为CLOSED的region, CLOSED不是中间状态,是最终状态了,所以也就没有了。

五.hbase2 HBCK Report Region Holes

Hbck report中显示有holes。Region Holes(Region空洞:Region不连续)

hbase2.x hbck2处理region方案(长期openingclosingoffline,Report Region Holes,report Unkown server)等,第20张

查看该问题可通过master UI界面的HBCK Report查看

解决方法很简单,直接使用 hbck2 提供的 fixMeta 操作即可。

在 Usage 说明中能看到 fixMeta 能够修复 ‘holes’,‘overlaps’ 等 region 问题,但是需要注意必须确保 hbase:meta 是健康的状态下进行修复操作!也就是确保表里的所有 region 都是 OPEN 状态再进行此操作,确保不会对集群造成额外的影响。

执行命令

hbase hbck -j $HBASE_HOME/lib/hbase-hbck2-1.3.0-SNAPSHOT.jar fixMeta

hbase2.x hbck2处理region方案(长期openingclosingoffline,Report Region Holes,report Unkown server)等,第21张

等待一段时间,这个过程可以监控 master 日志,如果一切顺利问题就解决啦。

六.Hbck report Unkown server处理

base 查询出现org.apache.hadoop.hbase.NotServingRegionException:

table.region is not online on hregionservername

重启hmaster,出现region无法自动分配,assign region也无法重新分配。

查看hbck report 发现有unknown servers的问题。

hbase2.x hbck2处理region方案(长期openingclosingoffline,Report Region Holes,report Unkown server)等,第22张

原因:regionserver的name发生变化。
删除掉当前未知的regionsever,恢复正常

hbase hbck -j hbase-hbck2-1.3.0-SNAPSHOT.jar scheduleRecoveries unknowservername

 hbase2.x hbck2处理region方案(长期openingclosingoffline,Report Region Holes,report Unkown server)等,第23张

批量脚本

如果有多个region需要处理可以使用批量脚本

1.批量bypass

从页面http://hmaster主机:16010/procedures.jsp拿到procedure id列表

然后批量bypass

hbase2.x hbck2处理region方案(长期openingclosingoffline,Report Region Holes,report Unkown server)等,第24张

2.批量unassign

从页面http://hmaster主机:16010/master.jsp拿到region列表

hbase2.x hbck2处理region方案(长期openingclosingoffline,Report Region Holes,report Unkown server)等,第25张

3.批量assign

hbase2.x hbck2处理region方案(长期openingclosingoffline,Report Region Holes,report Unkown server)等,第26张

4.批量set offline

hbase2.x hbck2处理region方案(长期openingclosingoffline,Report Region Holes,report Unkown server)等,第27张

网友评论

搜索
最新文章
热门文章
热门标签