HBase簡介
分佈式,多版本,面向列的數據庫
特色:強一致性 高擴展 高可用數據庫
HBase數據原型
- RowKey: 表中每條記錄的主鍵,RowKey會進行字典排序
- Column Family: 列族,將表進行橫向切割,後面簡稱CF
- Column: 屬於某一個列族,可動態添加列
- Version Number: 類型爲Long,默認值是系統時間戳,可由用戶自定義
- Value: 真實的數據
-
一行數據能夠包含多個列族,可是通常不超過三個服務器
-
存儲在HBase裏面的表通常有上億行,因此HBase表會對整個數據按照 RowKey 進行字典排序,而後再對這張表進行橫向切割。切割出來的數據是存儲在 HFile 裏面,而不一樣的 Column Family 雖然屬於一行,可是其在底層存儲是放在不一樣的 HFile 裏。因此這張表用了六種顏色表示,也就是說,這張表的數據會被放在六個 HFile 裏面的,這就能夠把數據儘量的分散到整個集羣分佈式
-
不一樣的列族會存儲到不一樣的HFile上,可是它們仍是存儲在同一個Region中,在同一個節點上3d
HBase結構
- Region 表按RowKey水平劃分紅一個集合
- ReginServer 至關於HDFS的DataNode,存放Region
- Hlog 預寫日誌文件
- Store 存放在Region中
- StoreFile 數據實際存儲的位置
- MemStore 內存存儲空間
- RegionServer主要管理兩種文件,一是Hlog(預寫日誌 write-ahead log WAL),二是region(實際的數據文件)
- 用戶向HBase寫入數據,首先在Hlog中產生寫入記錄,若是HBase服務器崩潰,能夠經過Hlog回滾尚未持久化的數據,
- 在Hlog中寫入記錄後,數據存在MemStore,當MemStore中數據寫滿時,數據就會被刷寫到磁盤中StoreFile中,
- StoreFile存放在Region中,當其中數據寫滿,就會等分產生另外一個Region
- 當table中的行不斷增多,就會有愈來愈多的region。這樣一張完整的表被保存在多個Region上
- 從上面的圖也能夠清晰看到,一個RegionServer管理多個 Region;而一個 Region 管理一個或多個列族