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

原文鏈接:https://blog.csdn.net/shfshihuafeng/article/details/90734603

一.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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章