1. 程式人生 > >Hadoop學習筆記(8)-簡述分散式資料庫Hbase原理

Hadoop學習筆記(8)-簡述分散式資料庫Hbase原理

1.Hbase簡介

Hbase是一個分散式可擴充套件的NoSQL資料庫,提供對結構化,半結構化,非結構化大資料的實時讀寫和隨機訪問能力,而且操作速度與資料量基本無關,所以可以用於海量資料處理。Hbase之於HDFS就類似於資料庫之於檔案系統。自然Hbase是建立在HDFS之上的,可以儲存海量的資料。
常見的NoSQL資料庫還有:Apache Cassandra,MongoDB等。

下圖1展示了Hbase在Hadoop的邏輯位置。
這裡寫圖片描述
圖1:Hbase在Hadoop中的位置

2.HBase表的邏輯模型

Hbase是Google BigTable的一個開源實現,資料儲存邏輯模型與BigTable類似,但實現上有一些不同之處。是一個分散式多維表,表中的資料通過:一個行關鍵字(row key),一個列關鍵字(column key),一個時間戳(time stamp)進行索引和查詢定位的。如下圖2:Hbase表的示例。

這裡寫圖片描述
圖2:Hbase表的示例

在實際的HDFS儲存中,以及儲存每個欄位資料所對應的完成的鍵值對:
{row key,column family,column name,timestamp}->value
如圖2中key3行Address欄位下t2時間戳下的數值Shanghai,儲存的完整鍵值對是:
{key3,PersonalInfo,Address,t2}->Shanghai
也就是說Hbase真實是不存在行列的概念,只有鍵值對的概念。其行的概念是通過相鄰的鍵值對的資料比較構建出來的。所以其物理上不是二維表的概念。

3.HBase表的儲存模型

前面瞭解了表的結構,那這個表又是怎麼儲存的呢?來看下圖3。
這裡寫圖片描述


圖3:HBase表的儲存模型

每張Table按row key進行全域性排序,Hbase將表劃分為若干個Region。Region也是Hbase排程的基本單位。

表在剛開始就只有一個Region,之後由於資料不斷增加,Region越來愈大,在Region中又分為多個Store(5中會提到),而當Store大小超過閾值,則會將Region分裂。依次就有了多個Region。

4.Hbase叢集的組成結構

這裡分佈講叢集的物理組成結構和叢集的邏輯組成結構。
4.1 Hbase叢集的物理組成結構
這裡寫圖片描述
圖4:Hbase叢集的物理組成結構
Hbase叢集分兩部分:Hbase Master和Hbase Region Server。如上圖3所示

另外Hbase叢集由zookeeper來監控。在偽分佈模式下Hbase會開啟自帶的zookeeper。

4.2 Hbase叢集的邏輯組成結構
這裡寫圖片描述
圖5:Hbase叢集的邏輯組成結構
可以從圖5中看出來:
1)在一個Region server cluster裡會有多個Region Server機器。
2)在每個Region Server機器內部有多個Region,結合前面Region的介紹,知道多個Region才組成一個真正的Table。Region是基本排程單位。
3)每個Region內部又有多個Store。
4)每個Store裡面又由menStore和StoreFile兩部分組成。其中StoreFile是最終的資料,它儲存到HDFS中去。menStore不論在Store是否有真實資料都會有。

Xianming