前面的文章我們介紹了HDFS文件系統、Mapreduce計算框架、Zookeeper協作服務今天我們介紹可在廉價PC Server上搭建起大規模結構化存儲集羣的分佈式存儲系統——HBase。
HBase
HBase – Hadoop Database,是一個高可靠性、高性能、面向列、可伸縮的分佈式存儲系統,利用HBase技術可在廉價PC Server上搭建起大規模結構化存儲集羣。
本章內容:
1) Hbase簡介
2) Hbase數據模型
3) Hbase基礎原理
4) Hbase系統架構
5) Hbase基礎操作
1. Hbase簡介
HBase是Apache Hadoop中的一個子項目,Hbase依託於Hadoop的HDFS作爲最基本存儲基礎單元,通過使用hadoop的DFS工具就可以看到這些這些數據存儲文件夾的結構,還可以通過Map/Reduce的框架(算法)對HBase進行操作。
上圖描述了Hadoop EcoSystem中的各層系統,其中HBase位於結構化存儲層,Hadoop HDFS爲HBase提供了高可靠性的底層存儲支持,Hadoop MapReduce爲HBase提供了高性能的計算能力,Zookeeper爲HBase提供了穩定服務和failover機制。
Hbase適用場景:
1) 大數據量存儲,大數據量高併發操作
2) 需要對數據隨機讀寫操作
3) 讀寫訪問均是非常簡單的操作
Hbase與HDFS對比:
l 兩者都具有良好的容錯性和擴展性,都可以擴展到成百上千個節點;
l HDFS適合批處理場景,但不支持數據隨機查找,不適合增量數據處理,不支持數據更新
2. Hbase數據模型
HBase以表的形式存儲數據。表由行和列族組成。列劃分爲若干個列族(row family),其邏輯視圖如下:
行健 |
時間戳 |
列族contents |
列族anchor |
列族mime |
“com.cnn.www” |
T9 |
Anchor:cnnsi.com=“CNN” |
||
T8 |
Anchor:my.look.ca=“CNN.com” |
|||
T6 |
Contents:html=“<html>……” |
Mime.type=“text/html” |
||
T5 |
Contents:html=“<html>……” |
|||
T3 |
Contents:html=“<html>……” |
幾個關鍵概念:
1) 行鍵(RowKey)
l 行鍵是字節數組, 任何字符串都可以作爲行鍵;
l 表中的行根據行鍵進行排序,數據按照Row key的字節序(byte order)排序存儲;
l 所有對錶的訪問都要通過行鍵 (單個RowKey訪問,或RowKey範圍訪問,或全表掃描)
2) 列族(ColumnFamily)
l CF必須在表定義時給出
l 每個CF可以有一個或多個列成員(ColumnQualifier),列成員不需要在表定義時給出,新的列族成員可以隨後按需、動態加入
l 數據按CF分開存儲,HBase所謂的列式存儲就是根據CF分開存儲(每個CF對應一個Store),這種設計非常適合於數據分析的情形
3) 時間戳(TimeStamp)
l 每個Cell可能又多個版本,它們之間用時間戳區分
4) 單元格(Cell)
l Cell 由行鍵,列族:限定符,時間戳唯一決定
l Cell中的數據是沒有類型的,全部以字節碼形式存儲
5) 區域(Region)
l HBase自動把表水平(按Row)劃分成多個區域(region),每個region會保存一個表裏面某段連續的數據;
l 每個表一開始只有一個region,隨着數據不斷插入表,region不斷增大,當增大到一個閥值的時候,region就會等分會兩個新的region;
l 當table中的行不斷增多,就會有越來越多的region。這樣一張完整的表被保存在多個Region 上。
l Region雖然是分佈式存儲的最小單元,但並不是存儲的最小單元。Region由一個或者多個Store組成,每個store保存一個columns family;每個Strore又由一個memStore和0至多個StoreFile組成,StoreFile包含HFile;memStore存儲在內存中,StoreFile存儲在HDFS上。
3. Hbase架構及基本組件
從上圖看到HBase的基本組件:
1) Client:
l 包含訪問HBase的接口,並維護cache來加快對HBase的訪問,比如region的位置信息。
2) Master
l 爲Region server分配region
l 負責Region server的負載均衡
l 發現失效的Region server並重新分配其上的region
l 管理用戶對table的增刪改查操作
3) Region Server
l Regionserver維護region,處理對這些region的IO請求
l Regionserver負責切分在運行過程中變得過大的region
4) Zookeeper作用
l 通過選舉,保證任何時候,集羣中只有一個Master,Master與RegionServers 啓動時會向ZooKeeper註冊
l 存儲所有Region的尋址入口
l 實時監控Region server的上線和下線信息,並實時通知給Master
l 存儲HBase的schema和table元數據
l 默認情況下,HBase 管理ZooKeeper 實例,比如, 啓動或者停止ZooKeeper
Zookeeper的引入使得Master不再是單點故障
由於時間關係,今天只介紹了前3節,明天我會一早寫上後邊的兩節(Hbase系統架構和Hbase基礎操作)