1. 程式人生 > >HBase 分散式資料庫

HBase 分散式資料庫

HBase 分散式資料庫

HBase 用來做什麼

HBase是用來提供高可靠性、高效能、列儲存、可伸縮、多版本的NoSql的分散式資料儲存系統,實現對大型資料的實時隨機的讀寫訪問
NoSql是Not Only SQL 的縮寫,意既不僅僅是SQl的意思,泛指非關係型的資料庫,是一項全新的資料庫革命性運動,提倡運用非關係型的資料儲存,這一概念是一種全新的思維的注入。

HBase的特點

1、容量大
HBase單表可以有上百億行、百萬列,資料矩陣橫向和
縱向兩個維度所支援的資料量級都非常具有彈性。
2、面向列
HBase是面向列的儲存和許可權控制,並支援獨立檢索。
列式儲存,其資料在表中是按照某列儲存的,這樣在查詢只
需要少數幾個欄位的時候,能大大減少讀取的資料量。
3、多版本
HBase每一個列的資料儲存有多個Version(version)。
4、稀疏性
為空的列並不佔用儲存空間,表可以設計的非常稀疏。
5、擴充套件性
Hbase為主從架構,底層依賴於HDFS,可橫向擴充套件。
6、高可靠性
WAL機制保證了資料寫入時不會因叢集異常而導致寫入
資料丟失:Replication機制保證了在叢集出現嚴重的問題時,
資料不會發生丟失或損壞。而且HBase底層使用HDFS,HDFS本
身也有備份。
7、高效能
底層的LSM資料結構和Rowkey有序排列等架構上的獨特
設計,使得HBase具有非常高的寫入效能。region切分、主鍵索
引和快取機制使得HBase在海量資料下具備一定的隨機讀取性
能,該效能針對Rowkey的查詢能夠達到毫秒級別。

HBase與傳統資料庫的對比

1、傳統資料庫遇到的問題:
資料量很大的時候無法儲存;
沒有很好的備份機制;
資料達到一定數量開始緩慢,很大的話基本無法支撐;
2、HBase優勢:
線性擴充套件,隨著資料量增多可以通過節點擴充套件進行支撐;
資料儲存在hdfs上,備份機制健全;
通過zookeeper協調查詢資料,訪問速度快。

HBase讀過程

1.Client訪問Zookeeper,查詢-ROOT-表,獲取.META.表資訊;
2.從.META.表查詢,獲取存放目標資料的Region資訊,從而找到對
應的RegionServer;
3.通過RegionServer獲取需要查詢的資料;
4.RegionServer的記憶體分為MemStore和BlockCache(快取)兩部分,
MemStore主要用於寫資料,BlockCache主要用於讀資料。讀請求
先到MemStore中查資料,查不到就到BlockCache中查,再查不到
就會到StoreFile上讀,並把讀的結果放入BlockCache。