1.數據模型
1.1數據模型概述
- HBase是一個稀疏、多維度、排序的映射表,這張表的索引是行鍵、列族、列限 定符和時間戳
- 每個值是一個未經解釋的字符串,沒有數據類型
- 用戶在表中存儲數據,每一行都有一個可排序的行鍵和任意多的列
- 表在水平方向由一個或者多個列族組成,一個列族中可以包含任意多個列,同一 個列族裏面的數據存儲在一起
- 列族支持動態擴展,可以很輕鬆地添加一個列族或列,無需預先定義列的數量以 及類型,所有列均以字符串形式存儲,用戶需要自行進行數據類型轉換
- HBase中執行更新操作時,
並不會刪除數據舊的版本,而是生成一個新的版本
, 舊有的版本仍然保留(這是和HDFS只允許追加不允許修改的特性相關的)
1.2數據模型相關概念
2.實現原理
2.1HBase的功能組件
- 庫函數:一般用於鏈接每個客戶端
- Master服務器:充當管家的作用
- Region服務器:負責存儲不同的Region
Hbase設計了三層結構實現Region的尋址和定位
- 首先要構建一個元數據表,假設這個元數據表只有兩列,第一列是Region的id,第二列是Region服務器的id
- Hbase最開始構建時有一個映射表,這個映射表被稱爲.META.表
- .META.表時用來存儲元數據的
3.運行機制
3.1HBase的系統架構圖
客戶端
·客戶端包含訪問HBase的接口,同時在緩存中維護着已經訪問過的Region位置 信息,用來加快後續數據訪問過程
· 包含訪問HBase的接口並維護cache來加快對HBase的訪問Zookeeper服務器
– Zookeeper可以幫助選舉出一個Master作爲集羣的總管,並保證在任何時刻總 有唯一一個Master在運行,這就避免了Master的“單點失效”問題
• 保證任何時候,集羣中只有一個master
• 存貯所有Region的尋址入口。
• 實時監控Region server的上線和下線信息。並實時通知Master
• 存儲HBase的schema和table元數據Master
主服務器Master主要負責表和Region的管理工作:
- 管理用戶對錶的增加、刪除、修改、查詢等操作
- 實現不同Region服務器之間的負載均衡
- 在Region分裂或合併後,負責重新調整Region的分佈
- 對發生故障失效的Region服務器上的Region進行遷移
版本二:
• 爲Region server分配region
• 負責Region server的負載均衡
• 發現失效的Region server並重新分配其上的region
• 管理用戶對table的增刪改操作
Region服務器
– Region服務器是HBase中最核心的模塊,負責維護分配給自己的Region,並 響應用戶的讀寫請求
• Region server維護region,處理對這些region的IO請求
• Region server負責切分在運行過程中變得過大的region
3.2Region服務器工作原理
- 用戶讀寫數據過程
•用戶寫入數據時,被分配到相應Region服務器去執行
•用戶數據首先被寫入到MemStore和Hlog中
•只有當操作寫入Hlog之後,commit()調用纔會將其返回給客戶端
•當用戶讀取數據時,Region服務器會首先訪問MemStore緩存,如果 找不到,再去磁盤上面的StoreFile中尋找