Hbase邏輯視圖css
注意上圖中的英文說明html
Hbase基本概念服務器
RowKey:是Byte array,是表中每條記錄的「主鍵」,方便快速查找,Rowkey的設計很是重要。
Column Family:列族,擁有一個名稱(string),包含一個或者多個相關列
Column:屬於某一個columnfamily,familyName:columnName,每條記錄可動態添加
Version Number:類型爲Long,默認值是系統時間戳,可由用戶自定義
Value(Cell):Byte array
物理存儲:
一、Table中全部行都按照row key的字典序排列;
二、Table在行的方向上分割爲多個Region;
三、Region按大小分割的,每一個表開始只有一個region,隨着數據增多,region不斷增大,當增大到一個閥值的時候,region就會等分會兩個新的region,以後會有愈來愈多的region;
四、Region是Hbase中分佈式存儲和負載均衡的最小單元,不一樣Region分佈到不一樣RegionServer上。
markdown
五、Region雖然是分佈式存儲的最小單元,但並非存儲的最小單元。Region由一個或者多個Store組成,每一個store保存一個columns family;每一個Strore又由一個memStore和0至多個StoreFile組成,StoreFile包含HFile;memStore存儲在內存中,StoreFile存儲在HDFS上。![]()
Hbase基本組件說明:架構
Client併發
包含訪問HBase的接口,並維護cache來加快對HBase的訪問,好比region的位置信息負載均衡
Master框架
爲Region server分配regiondom
負責Region server的負載均衡分佈式
發現失效的Region server並從新分配其上的region
管理用戶對table的增刪改查操做
Region Server
Regionserver維護region,處理對這些region的IO請求
Regionserver負責切分在運行過程當中變得過大的region
Zookeeper做用
經過選舉,保證任什麼時候候,集羣中只有一個master,Master與RegionServers 啓動時會向ZooKeeper註冊
存貯全部Region的尋址入口
實時監控Region server的上線和下線信息。並實時通知給Master
存儲HBase的schema和table元數據
默認狀況下,HBase 管理ZooKeeper 實例,好比, 啓動或者中止ZooKeeper
Zookeeper的引入使得Master再也不是單點故障
Write-Ahead-Log(WAL)
該機制用於數據的容錯和恢復:
每一個HRegionServer中都有一個HLog對象,HLog是一個實現Write Ahead Log的類,在每次用戶操做寫入MemStore的同時,也會寫一份數據到HLog文件中(HLog文件格式見後續),HLog文件按期會滾動出新的,並刪除舊的文件(已持久化到StoreFile中的數據)。當HRegionServer意外終止後,HMaster會經過Zookeeper感知到,HMaster首先會處理遺留的 HLog文件,將其中不一樣Region的Log數據進行拆分,分別放到相應region的目錄下,而後再將失效的region從新分配,領取 到這些region的HRegionServer在Load Region的過程當中,會發現有歷史HLog須要處理,所以會Replay HLog中的數據到MemStore中,而後flush到StoreFiles,完成數據恢復
HBase容錯性
ZooKeeper–> -ROOT-(單Region)–> .META.–> 用戶表
-ROOT-Zookeeper中記錄了-ROOT-表的location。
.META.表包含全部的用戶空間region列表,以及RegionServer的服務器地址。
storing large amounts of data(100s of TBs)
need high write throughput
need efficient random access(key lookups) within large data sets
need to scale gracefully with data
for structured and semi-structured data
don’t need fullRDMS capabilities(cross row/cross table transaction, joins,etc.)
大數據量存儲,大數據量高併發操做
須要對數據隨機讀寫操做
讀寫訪問均是很是簡單的操做
不支持數據更新
一、http://www.alidata.org/archives/1509(存儲模型比較詳細)
二、http://www.searchtb.com/2011/01/understanding-hbase.html(技術框架以及存儲模型)
三、http://wenku.baidu.com/view/b46eadd228ea81c758f578f4.html(讀和寫的流程比較詳細)