动态

详情 返回 返回

【趙渝強老師】HBase的體系架構 - 动态 详情

HBase是大表(BigTable)思想的一個具體實現。它是一個列式存儲的NoSQL數據庫,適合執行數據的分析和處理。簡單來説,就是適合執行查詢操作。從體系架構的角度看,HBase是一種主從架構,包含:HBase HMaster、Region Server和ZooKeeper,下圖展示了這一架構。
image.png

其中:

  • HBase HMaster負責Region的分配及數據庫的創建和刪除等操作。
  • Region server負責數據的讀寫服務。
  • ZooKeeper負責維護集羣的狀態。

視頻講解如下:
https://www.bilibili.com/video/BV1hscteWEsv/?aid=113825776931...

下面詳細討論HBase體系架構中每一個組成部分的作用。

一、 HMaster

HMaster是整個HBase集羣的主節點,它的職責主要體現在以下幾方面:

  1. 負責在Region Server上分配和調控不同的Region。
  2. 根據恢復和負載均衡的策略,重新分配Region。
  3. 監控Region Server的狀態。
  4. 管理和維護HBase的命名空間,即NameSpace。
  5. 接收客户端的請求,提供創建,刪除或者更新表格的接口。

另一方面,如果整個集羣中只存在一個HMaser,將造成單點故障的問題。因此也需要基於ZooKeeper來實現HBase的HA(高可用)。但是HBase實現HA非常簡單,因為在其體系架構中已經包含了ZooKeeper,因此只需要手動再啓動一個HMaster作為Backup HMaster即可。視頻講解如下:
https://www.bilibili.com/video/BV1rjUWYFEE3/?aid=113503637608...

二、 Region Server

Region Server負責數據的讀寫操作。一個Region Server可以包含多個Region,而一個Region只能屬於一個Region Server。那麼什麼是Region呢?可以把Region理解成是列族,它與列族的關係是一對多的關係。HBase表中的列族是根據rowkey的值水平分割成所謂的Region的。在默認情況下,Region的大小是1G,其中包含8個HFile的數據文件。而每個數據文件的大小正好是128M,與HDFS數據塊的大小保存一致。每一個Region server大約可以管理1000個Region。Region Server除了包含Region以外,還包含WAL預寫日誌、Block Cache讀緩存和MemStore寫緩存三個部分。視頻講解如下:
https://www.bilibili.com/video/BV1zAUfYdEjU/?aid=113507563542...

2.1 WAL預寫日誌

Write-Ahead Logging是一種高效的日誌算法,相當於Oracle中的redo log,或者是MySQL中的binlog。基本原理是在數據寫入之前首先順序寫入日誌,然後再寫入緩存,等到緩存寫滿之後統一進行數據的持久化。WAL將一次隨機寫轉化為了一次順序寫加一次內存寫,在提供性能的前提下又保證了數據的可靠性。如果在寫入數據完成之後發生了宕機,即使所有寫緩存中的數據都丟失了,也可以通過恢復WAL日誌達到數據恢復的目的。寫入的WAL日誌會對應有一個HLog文件。

2.2 Block Cache讀緩存

HBase將經常需要讀取的數據放入Block Cache中,來提供讀取數據的效率。當Block Cache的空間被佔滿後,將採用LRU算法將其中被讀取頻率最低的數據從Block Cache中清除。

2.3 MemStore寫緩存

MemStore中主要存儲了還未寫入磁盤的數據,如果此時發生了宕機,這部分數據是會丟失的。HBase中的每一個列族對應一個MemStore,其中存儲的是按鍵排好序的待寫入硬盤的數據,數據也是按Rowkey排好序寫入HFile中的,最終保存到HDFS中。

提示:HBase表中的數據最終保存在數據文件HFile中,並存儲與HDFS的DataNode上。在將MemStore中的數據寫入HFile中的時候,採用順序寫入的機制,避免了磁盤大量尋址的過程,從而大幅提高了性能。在讀取HFile的時候,文件中包含的Rowkey信息會被加載到內存中,這樣就可以保證數據檢索只需一次硬盤查詢操作。

三、 HBase中的ZooKeeper

ZooKeeper在整個HBase集羣中主要維護節點的狀態並協調分佈式系統的工作。主要體現在以下幾方面:

  1. 監控HBase節點的狀態,包括:HMaster和RegionServer。
  2. 通過ZooKeeper的Watcher機制提供節點故障和宕機的通知。
  3. 保證服務器之間的同步。
  4. 負責Master選舉的工作。

視頻講解如下:
https://www.bilibili.com/video/BV1dcSKYgEow/?aid=113513737492...

下圖展示了HBase在ZooKeeper中保存的數據信息。
image.png

user avatar kangkaidafangdezi 头像 feichangkudechongfengyi 头像 code500g 头像 shuirongshui 头像 zhuyundataflux 头像 chat2db 头像
点赞 6 用户, 点赞了这篇动态!
点赞

Add a new 评论

Some HTML is okay.