hbase學習筆記(1)——hbase體繫結構

來源:互聯網
上載者:User
HBase體繫結構HBase的伺服器體繫結構遵從簡單的主從伺服器架構,它由HRegion Server群和HBase Master Server構成。
HBase Master Server負責管理所有的HRegion Server,而HBase中所有的伺服器都是通過ZooKeeper來進行協調並處理HBase伺服器運行期間可能遇到的錯誤。
HBase Master本身並不儲存HBase中的任何資料,HBase邏輯上的表可能會被劃分成多個HRegion,然後儲存到HRegion伺服器群中。
HBase Master伺服器中儲存的是從資料到HRegion伺服器的映射。
HBase體繫結構如:HRegion當表的大小超過設定值的時候,HBase會自動將表劃分為不同的地區,每個地區包含所有行的一個子集。對使用者來說,每個表是一堆資料的集合,靠主鍵來區分。從物理上來說,一張表是被拆分成多塊,每塊就是一個HRegion。
我們用表名+開始/結束主鍵來區分每一個HRegion。一個HRegion會儲存一個表裡面某段連續的資料,從開始主鍵到結束主鍵,一張完整的表格是儲存在多個HRegion上面的。HRegion伺服器所有的資料庫資料一般是儲存在HadoopDistributed File System(HDFS)上面的,使用者通過一系列HRegion伺服器擷取這些資料。一台機器上一般只運行一個HRegion伺服器,而且每一個區段的HRegion也只會被一個HRegion伺服器維護。
HRegion伺服器包括兩大部分:HLOG部分和HRegion部分。
其中HLOG用來儲存資料日誌,採用的是先寫日誌的方式(Write-ahead log)。
HRegion部分由很多的HRegion組成,儲存的是實際的資料。每一個HRegion又由很多的Store組成,每一個Store儲存的實際上是一個列族(ColumnFamily)下的資料。
此外,每一個HSore中包含一塊MemStore。MemStore駐留在記憶體中,資料來到時首先更新到MemStore中,當到達閥值之後再更新到對應的StoreFile(又名HFile)中。每一個Store包含了多個StoreFile,StoreFile負責的是實際的資料存放區,為HBase中最小的儲存單元。
HBase中不涉及資料的直接刪除和更新操作,所有的資料均通過追加的方式進行更新。資料的刪除和更新在HBase合并(compact)的時候進行。當Store中StoreFile的數量超過設定的閥值時將觸發合併作業,該操作會把多個StoreFile檔案合并成一個StoreFile。
當使用者需要更新資料的時候,資料會被分配到對應的HRegion伺服器上提交修改。資料首先被提交到HLOG檔案裡面,在寫入HLOG之後,commit()調用才會將其返回給用戶端。HLOG檔案用於故障恢複。例如某一台HRegionServer發生故障時,那麼它所維護的HRegion會被重新分配到新的機器上。這時HLOG會按照HRegion進行劃分。新的機器在載入HRegion的時候可以通過HLOG對資料進行恢複。
當一個HRegion變得過於巨大、超過了設定的閥值時,HRegion伺服器會調用HRegion.closeAndSplit(),將此HRegion拆分為兩個,並且報告主伺服器讓它決定由哪台HRegion伺服器來存放新的HRegion。
這個拆分過程十分迅速,因為兩個新的HRegion最初只是保留原來HRegionFile檔案的引用。這時舊的HRegion會處於停止服務的狀態,當新的HRegion拆分完成並且把引用刪除了以後,舊的HRegion才會刪除。
另外,兩個HRegion可以通過調用HRegion.closeAndMerge()合并成一個新的HRegion,目前的版本下進行此操作需要兩台HRegion伺服器都停機。
HBase Master伺服器每台HRegion伺服器都會和HMaster伺服器通訊,HMaster的主要任務就是告訴每個HRegion伺服器它要維護哪些HRegion。
當一台新的HRegion伺服器登入到HMaster伺服器時,HMaster會告訴它先等待分配資料。當一台HRegion死機時,HMaster會把它負責的HRegion標記為未分配,然後再把它們分配到其它HRegion伺服器中。
如果當前HBase已經解決了之前存在的SPFO(單點故障),並且HBase總可以啟動多個HMaster,那麼它就能通過Zookeeper來保證系統中總有一個Master在運行。
HMaster在功能上主要負責Table和HRegion的管理工作,具體包括:
  • 系統管理使用者對table的增、刪、改、查操作;
  • 管理HRegion伺服器的負載平衡,調整HRegion分布;
  • 在HRegion分裂後,負責新HRegion的分配;
  • 在HRegion伺服器停機後,負責失效HRegion伺服器上的HRegion遷移。
ROOT表和META表HRegion是按照表名和主鍵範圍來區分,由於主鍵範圍是連續的,所以一般用開始主鍵就可以表示相應的HRegion。但是,因為我們有合并和分割操作,如果正好在執行這些操作的過程中出現死機,那麼就可能存在多份表名和開始主鍵相同的資料,這樣的話只有開始主鍵就不夠了,這就需要通過HBase的中繼資料資訊來區分那一份才是正確的資料檔案,為了區分這樣的情況,每個HRegion都有一個‘regionId’來標識它的唯一性。
所以,一個HRegion的唯一標識為:表名+開始主鍵+唯一ID(tableName+startKey+regionId)。通過這個標識符來區分不同的HRegion,這些資料就是中繼資料(META),而中繼資料本身也是被儲存在HRegion裡面的,所以我們稱這個表為中繼資料表(META Table),裡面儲存的就是HRegion標識符和實際HRegion伺服器的映射關係。
META表也會增長,並且可能被分割成幾個HRegion,為了定位這些HRegion,我們採用一個ROOT表,它儲存了所有META表的位置,且ROOT表是不能被分割的,永遠只存在一個HRegion。
在HBase啟動的時候,HMaster就會掃描ROOT表,因為這個表只會有一個HRegion,所以這個HRegion的名字是被寫死的。當然要把ROOT表分配到一個HRegion伺服器中需要一定的時間。
當ROOT表被分配好之後,HMaster就會掃描ROOT表,擷取META表的名字和位置,然後把META表分配到不同的HRegion伺服器中,最後就是掃描META表,找到所有HRegion地區的資訊,把它們分配給不同的HRegion伺服器。
HMaster在記憶體中儲存著當前活躍的HRegion伺服器的資料,因此如果HMaster死機,整個系統也就無法訪問了,這時伺服器的資訊也就必要儲存到檔案裡面了。
ROOT表和META表的每一行都包含一個列族(info列族):
  • info:regioninfo 包含了一個序列化的HRegionInfo對象。
  • info:server 儲存了一個字串,是伺服器的地址HServerAddress.toString()。
  • info:startcode 是一個長整型的數字字串,它是在HRegion伺服器啟動的時候傳給HMaster的,讓HMaster確定這個HRegion伺服器的資訊有沒有更改。
因此,當一個用戶端拿到ROOT表地址後,就沒有不要再串連HMaster了,HMaster的負載相對就小了很多。它只會處理逾時的HRegion伺服器,並在啟動的時候掃描ROOT表和META表,以及返回ROOT表的HRegion伺服器位址。
ROOT表包含META表所在的地區列表,META表包含所有使用者的空間地區列表,以及HRegion伺服器位址。用戶端能夠緩衝所有已知的ROOT表和META表,從而提高訪問的效率。ZooKeeperZooKeeper儲存的是HBase中ROOT表和META表的位置。
此外,ZooKeeper還負責監控各個機器的狀態(每台機器到ZooKeeper中註冊一個執行個體)。當某台及其發生故障的時,ZooKeeper會第一時間感知到,並通知HBase Master進行相應的處理。
同時,當HBase Master發生故障的時候,ZooKeeper還負責HBase Master的恢複工作,能夠保證在同一時刻系統中只有一台HBase Master提供服務。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.