HBase的理論性總結

風的王子發表於2013-11-03

1.HBase的體系結構

主從伺服器架構,有HReginon群和HBase Master伺服器構成。HBase Master負責管理所有的HRegion伺服器,所有的HRegion伺服器通過Zookeeper來進行協調處理HBase 伺服器執行期間的錯誤。HBase Master 不儲存HBase中的任何資料,HBase 邏輯上表會被劃分為多個HRgion,然後儲存在HRgion伺服器群。HBase Master儲存的是從資料到HRegion 伺服器的對映。

HBase表超設定值得大小時,會自動劃分不同的區域,每個區域包含所有行的一個子集。從物理上來說,一張表被分成了多個塊,每個塊就是一個HRegion。用 表明+開始/結束主鍵來區分HRegion。一個HRegion會儲存一個表裡面的某段連續的資料,從開始主鍵到結束主鍵。一張完整的表示存在多個HRegion上面的。

一臺機器一般只執行一個HRegion伺服器,每一個區段的HRegion只會被一個HRegion伺服器維護。

HRegion包含HLOG和HRegion。HLOG用來儲存資料日誌,採用先寫日誌的方式。HRegion儲存實際的資料。HRegion由很多Store和MemStore組成,每個Store儲存一個列簇資料(ColumnFamily)。資料來時先到達MemStore,超過閾值就會儲存到相應的StoreFile(HFile)中。StoreFile(Hfile)為HBase中最小的單元。

HLOG 控制提交和恢復

HBase Master伺服器的職責:

管理使用者對Table的增刪改查操作

管理HRegion伺服器的負載均衡,調整HRegion分佈

在HRegion分裂後,給新HRegion分配

在HRegion伺服器停機後,負責失效HRegion伺服器上的HRegion遷移

ROOT表和Meta表

主鍵範圍是連續的,一般開始主鍵就可以表示相應的HRegion,每個HRegion有一個‘hregionId’,HRegion表示:表明+開始主鍵+ID 這就是後設資料Meta。HRegion裡面儲存的這系列元素叫Meta表。

Root table儲存了所有後設資料的位置,Root 表不能被分割,永遠只存在一個HRegion

後設資料和跟資料表每行都儲存了一個列簇:

    info:regioninfo(一個序列化的HRegionInfo物件)

    info:server(伺服器地址字串HServerAddress.toString())

    info:startcode(用來給主伺服器判斷,HRegion伺服器資訊是否更改)

客戶端根據Root表地址,就沒必要連線主伺服器,只處理超時HRegion伺服器,再重啟時候返回HRegion地址

2,HBase資料模型

資料模型---->(java類)

他是稀疏儲存。索引是,行關鍵字、列關鍵字和時間戳。HBase裡的資料都是字串沒有型別

列名字的格式 family:qualifier

Hbase的操作是瑣行的

HBase說有資料庫的更新都有一個時間戳標記。HBase根據這個作為版本保留依據。

概念檢視

3.HBase 與RDBMS

資料型別:Hbase只有字串型別,所有型別都交由使用者自己處理。關係型資料庫有豐富的型別選擇和儲存方式

資料操作:HBase只是簡單地插入,查詢,刪除,清空等操作。表和表之間是分離的。

儲存模式:HBase是基於列儲存的,每個列簇有幾個檔案儲存。傳統資料庫是基於表格和行模式儲存

資料維護:HBase的更新,是新增新版本的資料,而不是關聯式資料庫的替換更改

可伸縮性:可以比較輕鬆的增加刪除硬體容錯性比較高,關係型資料庫可能要靠中介軟體

HBase更適合的是網際網路應用需求和海量資料儲存。比較適合開發wiki,archiveorg 型別的服務


4.與客戶端的互動模式

分別是java API,Rest和Thrift介面


相關文章