* Client
1. 包括訪問HBase的接口,并保護cache來加快對HBase的訪問,比如region的位置信息。
* Zookeeper:
1. 選舉集群中的Master,Master與RegionServers 啟動時會向ZooKeeper注冊。
2. 存儲所有Region的尋址入口。
3. 實時監(jiān)控Region server狀態(tài)并實時通知Master。
4. 存儲HBase的schema和table元數(shù)據(jù)。
5. 使Master不存在單點故障。
* Master
1. 在Region Split后,為Region server分配region。
2. 管理HRegionServer的負載均衡,調(diào)劑Region散布。
3. 發(fā)現(xiàn)失效的Region server后重新分配其上的region,并負責(zé)Regions遷移。。
4. 管理用戶對table的增刪改查操作。
* Region Server
1. Regionserver保護region,處理對這些region的IO要求,向HDFS文件系統(tǒng)讀寫數(shù)據(jù)。
2. Regionserver負責(zé)切分在運行進程中變得過大的region。
* Region
1. table依照行分割成若干Region,每一個Region對應(yīng)table中的1個Region。
2. Region由多個HStore組成。
* HLog
1. 類似mysql的binlog,數(shù)據(jù)會先寫到WAL上,然后再放到內(nèi)存中,數(shù)據(jù)恢復(fù)。
2. 已持久化到StoreFile的HLog會定期被刪除。
* HStore
1. HBase的存儲核心,由MemStore和StoreFile組成。
2. 每一個HStore對應(yīng)Table的1個列族的存儲。
* MemStore
1. 數(shù)據(jù)不直接寫磁盤而是先寫到MemStore,當(dāng)滿了才會Flush到StoreFile中。
2. 底層由HFile實現(xiàn)。
3. 數(shù)據(jù)只需寫入到此內(nèi)存便可返回,快速的插入操作。
* StoreFile
1. StoreFile文件數(shù)到1定閥值會觸發(fā)Compact合并操作,多個StoreFile變成1個StoreFile。
2. 所有數(shù)據(jù)操作都是添加操作,保證I/O,而對數(shù)據(jù)更新/刪除都是在后續(xù)compact進程中完成。
HBase支持很多文件系統(tǒng)的存儲。
1. 操作系統(tǒng)原生文件系統(tǒng)。
2. HDFS文件系統(tǒng)。
3. 其他文件系統(tǒng)。
HDFS可靠性高及其同屬同個生態(tài),選擇HDFS作為存儲。
尋址進程大致為client -> -ROOT- -> .META. -> RS ->region -> rowkey。
客戶端會緩存查詢過的rowkey的地址。
client訪問hbase上數(shù)據(jù)的進程其實不需要master參與(尋址訪問zookeeper和region server,數(shù)據(jù)讀寫訪問region server),master僅僅保護table和region的元數(shù)據(jù)信息,負載很低。
HBase的插入性能很好,查詢還不錯,騰訊給出的數(shù)據(jù)是經(jīng)過調(diào)優(yōu)在百億數(shù)據(jù)級別80%以上數(shù)據(jù)能在20ms查到。
詳細的1些數(shù)據(jù)后面在寫代碼階段會給出。
當(dāng)數(shù)據(jù)峰值接近系統(tǒng)設(shè)計容量時,可以簡單的通過增加服務(wù)器的方式來擴大容量。某種程度上來講,這個動態(tài)擴容進程無需停機,HBase系統(tǒng)可以照舊運行并提供讀寫服務(wù),完全實現(xiàn)動態(tài)無縫無宕機擴容。
balance模式下,會自動將數(shù)據(jù)遷移到新機器上,合適中小集群,遷移進程大量消耗機器資源。
非balance模式下,新寫入文件寫到新機器上。
hbase優(yōu)勢在于接近線性的任意水平擴大,沒必要在單機上與redis性能太叫真,看自己場景選擇。
上一篇 聊一聊ThreadLocal
下一篇 二叉搜索樹的第k個結(jié)點