Hadoop HBase概念學習系列之HRegion服務器(三)

  全部的數據庫數據通常是保存在Hadoop分佈式系統上面的,用戶經過一系列HRegion服務器獲取這些數據。一臺機器上通常只運行一個HRegion服務器,並且每一分區段的HRegion也只會被一個HRegion服務器維護。html

 

  HRegion服務器包含兩大部分:HLog部分和HRegion部分。數據庫

  HRegion服務器在它這裏面,又至關因而個小組長。服務器

 

     HBase裏的HRegion分佈式

  其中HLog用來存儲數據日誌,採用的是先寫日誌的方式。HRegion部分由不少的HRegion組成,存儲的是實際的數據。每個HRegion又由不少的Store組成,每個Store存儲的其實是一個列簇(ColumnFamily)下的數據。此外,在每個HStore(又名Store)中有包含一塊MemStore。MemStore駐留在內存中,數據到來時首先更新到MemStore中,當到達闊值以後再更新到對應的StoreFile(又名HFile)中。每個Store包含了多個StoreFile,StoreFile負責的是實際數據存儲,爲HBase中最小的存儲單元。oop

 

   HBase中不涉及數據的直接刪除和更新操做,全部的數據均經過追加的方式進行更新。數據的刪除和更新在HBase合併的時候進行。當Store中StoreFile的數量超過設定的闊值時將觸發合併操,該合併操做把多個StoreFile文件合併成一個StoreFile。post

  當用戶須要更新數據的時候,數據會被分配到對應的HRegion服務器上提交修改。數據首先被提交到HLog文件裏面,在操做寫入HLog以後,commit()調用纔會將其返回給客戶端。HLog文件用於故障恢復。例如某一臺HRegionServer發生故障,那麼它所維護的HRegion會被從新分配到新的機器上。這是HLog會按照HRegion進行劃分。新的機器在加載HRegion的時候能夠經過HLog對數據進行恢復spa

 

  當一個HRegion變得太過巨大,超過了設定的闊值時,HRegion服務器會調用HRegion.closeAndSplit(),將此HRegion拆分爲兩個,而且報告給主服務器讓它決定由哪臺HRegion服務器來存放新的HRegion。這個拆分過程十分迅速,由於兩個新的HRegion最初只是保留原來HRegionFile文件的引用。這時舊的HRegion會處於中止服務的狀態,當新的HRegion拆分完成而且把引用刪除了之後,舊的HRegion纔會刪除。另外,HRegion能夠經過調用HRegion.clodeAndMerge()合併成一個新的HRegion,當前版本下進行此操做須要兩臺HRegion服務器都停機。3d

 

 

相關文章
相關標籤/搜索