首頁 > 成語

Java大資料:Hbase分散式儲存入門

作者:由 成都加米穀大資料 發表于 成語日期:2023-01-23

hbase為什麼可以儲存海量的稀疏資料

之前的系列文章當中,已經為大家介紹了大資料儲存當中的MongoDB、Redis等資料庫,今天接著來講Hbase。Hbase在大資料儲存當中,與Hadoop生態緊密相關,也是Hadoop生態當中必學的重要元件。下面我們從基礎入門開始,來講講Hbase。

Java大資料:Hbase分散式儲存入門

支援大資料處理的第一代框架,以Hadoop為主流代表,而基於Hadoop,產生了比較完善的大資料技術生態,發展至今已有二十多個元件。這其中,Hbase主要在大資料儲存環節,發揮著重要作用。

Hbase簡介

HBase,根據官方給出的定義,是面向列的非關係型分散式資料庫,在Hadoop體系當中,基於分散式檔案系統HDFS來工作。

Java大資料:Hbase分散式儲存入門

Hbase的原型,來自於谷歌的BigTable,採用Java語言程式設計,實現了BigTable論文提到的一些壓縮演算法、記憶體操作和布隆過濾器等,這使得Hbase在海量資料儲存、高效能讀寫場景當中,具備相當的優勢。

Hbase特性

基於列式儲存模型,實現資料高度壓縮,節省儲存成本;

採用LSM機制而不是B(+)樹,更加適合海量資料實時寫入;

高可靠,資料儲存為多個副本(預設是3副本),且具備自動故障轉移功能;

高擴充套件,支援分片擴充套件能力(基於Region),可實現自動、資料均衡;

強一致性讀寫,資料的讀寫都針對主Region上進行,屬於CP型系統;

易操作,HBase提供了Java API、RestAPI/Thrift API等介面

查詢最佳化,採用Block Cache和布隆過濾器來支援海量資料的快速查詢。

Hbase整體架構

Hbase叢集架構,通常涉及到HBase Master、Region Server、Zookeeper、HDFS等幾個配合。

Java大資料:Hbase分散式儲存入門

一個Hbase叢集,由一個Master和幾個Region Server組成。其中,Master負責維護表結構資訊;實際的資料儲存在Region Server上,最終Region Server儲存的表資料會直接儲存在HDFS上。

HBase Master

HBase Master作為管理節點,通常在叢集當中會設定有一個主Master,一個備Master,主Master和備Master的管理,由Zookeeper實現。

Master的職責,包括:

管理監控所有的Region Server,負責Region Server故障轉移;

負責表的相關操作(create、modify、remove、enable、disable),列族的相關操作(add、modify、remove),還有Region的move、assign、unassign;

平衡叢集負載並定期檢查並清理hbase:meta表。

Java大資料:Hbase分散式儲存入門

Region Server

Region Server,主要負責服務和管理Region。在分散式叢集中,Region Server與DataNode通常按1:1比例安裝,從而實現利用HDFS中的短路徑讀取(Short Circuit),來降低延時。

Region Server的職責,包括:

資料的讀取和寫入,比如:get,put,delete,next等;

Region的拆分和壓縮;

檢查拆分並處理輕微壓縮;

檢查主要的壓縮;

定期重新整理MemStore到StoreFiles中的記憶體中寫入;

定期檢查RegionServer的WAL。

Zookeeper

在叢集環境當中,Zookeeper總是扮演著“管家”的角色,而Hbase的Region Server非常依賴Zookeeper服務,ZooKeeper管理HBase所有Region Server的資訊,包括具體的資料段存放在哪個Region Server上。

具體來說,ZooKeeper儲存著hbase:meta資訊。hbase:meta表記錄著HBase中所有Region的相關資訊。

Java大資料:Hbase分散式儲存入門

HDFS

在Hadoop叢集環境下,Hbase是運行於HDFS上的,所以對於HDFS的架構也建議要有比較清晰的瞭解和認知。尤其是在儲存檔案,處理故障轉移和複製塊的方面,HDFS當中的NameNode和DataNode,可以聯動起來學習。

關於Java大資料,Hbase分散式儲存入門,以上就為大家做了簡單的介紹了。Hbase在大資料技術生態體系當中,重要性不言而喻,學習當中也應當給予相應的重視。