Hbase 基礎 (待完善)

1.什麼是HBase?

   HBaseApache Hadoop的數據庫,能夠對大型數據提供隨機、實時的讀寫訪問。

HBase的目標是存儲並處理大型的數據。

HBase是一個開源的,分佈式的,多版本的,面向列的存儲模型。它存儲的是鬆散型數據。

2.HBase 特性

1高可靠性

2 高效性

3 面向列

4 可伸縮

5 可在廉價PC Server搭建大規模結構化存儲集羣

HBase是Google BigTable的開源實現,其相互對應如下:

Google HBase
文件存儲系統  GFS  HDFS
海量數據處理  MapReduce Hadoop MapReduce
協同服務管理    Chubby Zookeeper

 

HBase關係圖:

 

HBase位於結構化存儲層,圍繞HBase,各部件對HBase的支持情況:
Hadoop部件            作用
HDFS              高可靠的底層存儲支持
MapReduce   高性能的計算能力
Zookeeper            穩定服務和failover機制
Pig&Hive 高層語言支持,便於數據統計
Sqoop 提供RDBMS數據導入,便於傳統數據庫向HBase遷移

訪問HBase的接口

方式            特點              場合
Native Java API      最常規和高效            Hadoop MapReduce Job並行處理HBase表數據
HBase Shell 最簡單接口             HBase管理使用
Thrift Gateway      利用Thrift序列化支持多種語言     異構系統在線訪問HBase表數據
Rest Gateway 解除語言限制            Rest風格Http API訪問
PigPig Latin六十編程語言處理數據   數據統計
Hive 簡單,SqlLike


hbase 數據模型

 

關係型數據庫表 (以一個網上訂單爲例)


HBase表


兩種表的關係


組成部件說明:

Row Key:     Table主鍵 行鍵Table中記錄按照Row Key排序
Timestamp     每次對數據操作對應的時間戳,也即數據的version number
Column Family:  列簇,一個table在水平方向有一個或者多個列簇,列簇可由任意多個Column組成,

       列簇支持動態擴展,無須預定義數量及類型,二進制存儲,用戶需自行進行類型轉換

hbase 數據存儲 

 

Table&Region


1. Table隨着記錄增多不斷變大,會自動分裂成多份Splits,成爲Regions
2. 一個region由[startkey,endkey)表示
3. 不同region會被Master分配給相應的RegionServer進行管理





文件按rowkey 分佈在 不同的region 上 (分塊)

在region 上,不同列簇的的分佈在不同的hfile上(分簇)

hfile 每一條數據(列成員)存儲結構 kv:

key rowkey + 列簇+列成員+時間戳

value :字段值


如何查找一條數據 

 ---兩張特殊表:-ROOT- & .META.


.META.   記錄用戶表的Region信息,同時,.META.也可以有多個region
-ROOT-   記錄.META.表的Region信息,但是,-ROOT-只有一個region
Zookeeper中記錄了-ROOT-表的location
客戶端訪問數據的流程:
Client -> Zookeeper -> -ROOT- -> .META. ->用戶數據表
多次網絡操作,不過client端有cache緩存

HBase 系統架構圖


















HLog

HLog(WAL log):WAL意爲write ahead log,用來做災難恢復使用,HLog記錄數據的所有變更,一旦region server 宕機,就可以從log中進行恢復。

HLog文件就是一個普通的Hadoop Sequence File, Sequence File的value是key時HLogKey對象,其中記錄了寫入數據的歸屬信息,除了table和region名字外,還同時包括sequence number和timestamp,timestamp是寫入時間,sequence number的起始值爲0,或者是最近一次存入文件系統中的sequence number。 Sequence File的value是HBase的KeyValue對象,即對應HFile中的KeyValue。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章