Hbase是一個開源的非關係型分佈式數據庫屬於Nosql。數據存在HDFS中也可能存在內存中,可以容錯存儲海量稀疏數據。
Hbase的特性:
- 高可靠
- 高併發讀寫
- 面向列
- 可伸縮
- 易構建
行存儲 vs 列存儲
- 行存儲
- 優點:寫入一次性完成,保存數據完整性
- 缺點:數據讀取過程中產生冗餘數據,若有少量數據可以忽略
- 列村塾
- 優點:讀取過程,不會產生冗餘數據,特別適合對數據完整性要求不高的大數據領域
- 缺點:寫入效率差,保證數據完整性方面差
Hbase數據模型
- RowKey:表中每條記錄的“主鍵”。例如(a)
- column family:列簇,包含一個或者多個相關列。例如(cf1)
- column qualifier:子列。例如(bar)
- timestamp:時間戳,表示一個版本。例如(1368394583)
- value:相對應的值。例如(7)
三位有序,三級尋址
{rowkey => {family => {qualifier => {version => value}}}}
例如:a:cf1:bar:1368394583:7
Hbase物理模型
- Hbase一張表由一個或多個Hregion組成
- 記錄之間按Row Key的字典序排列
- 一個Region默認10個G
- 一個Region有一個RegionServer,而一個RegionServer有多個Region
HRegionServer內部管理了一系列的HRegion對象,HRegion是Hbase中分佈式存儲和負載均衡的最小單元
- 按rowkey可分爲Region -> HRegion -> Region Servers
- HRegion按列簇(Column Family) -> 多個HStore
- HStore -> memstore (默認128M)+ HFiles
- HFiles -> HDFS
HBase系統架構
- Client:訪問Hbase的接口,並維護Cache加速Region Server的訪問
- Master:負載均衡,分配Region到RegionServer
- Region Server:維護Region,負責Region的IO請求
- Zookeeper
- 保證集羣中只有一個Master
- 存儲所有Region的入口(Root)地址
- 實時監控Region Server的上下線信息,並通知Master
Hbase的容錯
Hbase操作
單行操作:PUT,GET,DELETE
多條操作:SCAN
Hbase的讀取過程
Hbase中掃描的順序依次是:BlockCache、MemStore、StoreFile( Hfile )