hbck源码系列(五)--Orphan源码分析

一.Orphan 原理
    1.1 什么是Orphan
      Orprphaned regions are regions without a .regioninfo file regions are regions without a .regioninfo file

       Orphan 是指region对应的Regioninfo文件在hdfs文件丢缺失。

    1.2 修复原理
检查region的hfile是否存在,可能不存在(数据在内存)。
如果没有数据,那么将region迁移到.hbck的一个目录,删除原region目录。
根据所有hfile文件确定startkey和endkey。
根据startkey和endkey 表的信息 新建在hdfs上新建region目录 regioninfo文件和列族等信息,迁移hfile和wal相关信息到新目录。
删除原先缺失regioninfo文件的hdfs的region目录。
二. Orphan 源码分析
    2.1  check Orphan
      检查 orphan的情况,根据orphanhdfsdir的大小判断是否有overlap的region。

      

     orphanHdfsDirs集合在哪里赋值?

     

 


   
   

    2.2 fix Orphan Condition
     修复 Orphan前提

     要想修复缺失regioninfo,必须满足以下两个条件

region对应目录必须存在
Region对应的Hdfs的表的目录和tebaldesc必须存在


   
    2.3  fix Orphan 
       修复regioninfo的源码如下:

    2.3.1 计算startkey和endkey
       根据region目录的所有hifle的最大值和最小值,计算startkey和endkey

加载列族目录
打开hfile文件流
计算某一个hfile的startkey和endkey
计算一个列族下startkey和endkey的最大值和最小值
     

    

 

    

    2.3.2 迁移空hfile目录
        如果某个region的所有列族的hfile文件为空,则把该目录迁移到.hbck目录下,删除原先的region目录,该情况sidelineRegionDir处理。

   

   

   

   

  2.3.3 新建和迁移region信息
          如果存在hfile,新建region和迁移旧region的hfile和wal等信息到hdfs

  根据startkey和endkey等信息新建region对象,并在hdfs新建对应目录。
  把原先hbckinfo对应region的信息(hfile和wal等信息)迁移到新建的hdfs目录。 
    

 

    

   

   

   到此源码分析结束,关于orpah的修复风险和修复步骤详见Orphan2

 
————————————————
版权声明:本文为CSDN博主「shfshihuafeng」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/shfshihuafeng/article/details/90734603

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值