天天看点

hbck源码系列(五)--Orphan源码分析一.Orphan 原理二. 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 修复原理

  1. 检查region的hfile是否存在,可能不存在(数据在内存)。
  2. 如果没有数据,那么将region迁移到.hbck的一个目录,删除原region目录。
  3. 根据所有hfile文件确定startkey和endkey。
  4. 根据startkey和endkey 表的信息 新建在hdfs上新建region目录 regioninfo文件和列族等信息,迁移hfile和wal相关信息到新目录。
  5. 删除原先缺失regioninfo文件的hdfs的region目录。

二. Orphan 源码分析

    2.1  check Orphan

      检查 orphan的情况,根据orphanhdfsdir的大小判断是否有overlap的region。

hbck源码系列(五)--Orphan源码分析一.Orphan 原理二. Orphan 源码分析   

     orphanHdfsDirs集合在哪里赋值?

hbck源码系列(五)--Orphan源码分析一.Orphan 原理二. Orphan 源码分析   

hbck源码系列(五)--Orphan源码分析一.Orphan 原理二. Orphan 源码分析   

hbck源码系列(五)--Orphan源码分析一.Orphan 原理二. Orphan 源码分析   

    2.2 fix Orphan Condition

     修复 Orphan前提

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

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

hbck源码系列(五)--Orphan源码分析一.Orphan 原理二. Orphan 源码分析   

    2.3  fix Orphan 

       修复regioninfo的源码如下:

    2.3.1 计算startkey和endkey

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

  • 加载列族目录
  • 打开hfile文件流
  • 计算某一个hfile的startkey和endkey
  • 计算一个列族下startkey和endkey的最大值和最小值
hbck源码系列(五)--Orphan源码分析一.Orphan 原理二. Orphan 源码分析   
hbck源码系列(五)--Orphan源码分析一.Orphan 原理二. Orphan 源码分析   
hbck源码系列(五)--Orphan源码分析一.Orphan 原理二. Orphan 源码分析   

    2.3.2 迁移空hfile目录

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

hbck源码系列(五)--Orphan源码分析一.Orphan 原理二. Orphan 源码分析   
hbck源码系列(五)--Orphan源码分析一.Orphan 原理二. Orphan 源码分析   
hbck源码系列(五)--Orphan源码分析一.Orphan 原理二. Orphan 源码分析   
hbck源码系列(五)--Orphan源码分析一.Orphan 原理二. Orphan 源码分析   

  2.3.3 新建和迁移region信息

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

  •   根据startkey和endkey等信息新建region对象,并在hdfs新建对应目录。
  •   把原先hbckinfo对应region的信息(hfile和wal等信息)迁移到新建的hdfs目录。 
hbck源码系列(五)--Orphan源码分析一.Orphan 原理二. Orphan 源码分析   
hbck源码系列(五)--Orphan源码分析一.Orphan 原理二. Orphan 源码分析   
hbck源码系列(五)--Orphan源码分析一.Orphan 原理二. Orphan 源码分析   
hbck源码系列(五)--Orphan源码分析一.Orphan 原理二. Orphan 源码分析   

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

继续阅读