1 概述
HBase是谷歌BigTable開源實現;
面向列存儲的非關係型數據庫;
存儲海量數據;
2 表的特點
大:一個表可以有數十億行,上百萬列;
面向列:
稀疏:對於null的列,並不佔用內存空間,表可以設計的可稀疏;
數據類型單一:存儲的都是字符串
3 術語
主鍵(Row Key):數據的主鍵,主要用來查詢;
列族(Column Family):列的限定符;在創建表的時候必須申明;
時間戳(Timestamp):數據在添加的時候自動獲取系統當前時間添加進來;
單元(Cell):數據的存儲單元,每一個Cell中保存同一份數據的多個版本,按照時間戳倒序排列;
4 HBase邏輯模型
5 HBase物理模型
6 架構圖
6.1 Client
客戶端
6.2 HMaster
管理用戶對錶的操作,而不是表的內容的操作;
管理HRegionServer的 負載均衡,調整Region分佈;
在Region Split後,負責新的Region的分配;
HRegion Server宕機後,轉移失效的HRegion Server上的Region遷移;
HMaster失效會影響元數據的修改,表數據的讀寫不影響;
6.3 HResion Server
維護HRegion並向HDFS中寫入數據;
當表的大小超過設置值大小,split HRegion;
6.4 zookeeper
HBase元數據保存在zookeeper中;
解決HBase單點故障;
HMaster和HRegion Server 啓動會向zookeeper註冊;
在zookeeper的/hbase目錄下存儲相關數據;
[zk: localhost:2181(CONNECTED) 0] ls /hbase
6.5 客戶端定位表
從zookeeper中讀取.META.表信息獲取table的位置;
[zk: localhost:2181(CONNECTED) 3] ls /hbase/meta-region-server
6.6 容錯性
zookeeper是一個高可靠無單點故障;
HMaster宕機,zookeeper會選舉新的HMaster;
HRegion Server定時向zookeeper發送心跳,若出現故障,HMaster會將失效HRegion server上的HRegion轉移