HBase是如何保證數據的強一致性的?
有三個方面能夠說的,另外HBase是犧牲了數據的可用性來保證它的數據強一致性的,即CAP原理中放棄了A,HBase是個cp系統。web
1. HBase中每一條數據只會出如今一個Region,它的數據冗餘備份不是在region這個層面作的,仍是依賴HDFS來作的冗餘。面試
並且同一時間一個Region只會被分配給一個RegionServer,這就保證了系統中只會有一條能夠使用的數據。
微信
2. HBase支持行級事物,即一個put操做要麼成功,要麼失敗。app
3. 另外當有RegionServer宕機的時候,Region會被分配到其餘的RegionServer上,同時重寫WAL Log,這個過程當中整個Region中的數據是不可用的,由於它是缺失的。負載均衡
若是可用的話那麼一定會有數據不一致的問題(即寫入過的數據查詢不到),因此這裏用可用性來換取了強一致性,等到WAL寫完,保證了數據完整性以後,纔可從新訪問。性能
LSM-Tree結構爲什麼寫入比讀取快那麼多?大數據
LSM-Tree結構寫入快的緣由是它將對數據的修改增量保持在內存中,達到指定的大小限制後纔將這些修改操做批量寫入磁盤;優化
讀取的時候會比較麻煩,須要合併磁盤中歷史數據和內存中最近修改操做,因此寫入性能大大提高,讀取時可能須要先看是否命中內存,不然須要訪問較多的磁盤文件。ui
極端的說,基於LSM樹實現的HBase的寫性能比MySQL高了一個數量級,讀性能低了一個數量級。
url
若是 HMaster 掛了,會對HBase集羣形成什麼影響?
說清楚HMaster的指責基本就能解決問題了
HMaster負責爲RegionServer分配Region
負責RegionServer的負載均衡
發現失效的RegionServer並從新分配其上的region
管理用戶對table的增刪改查操做
因此HMaster宕機後數據的讀取和寫入仍是正常的,可是沒法對table進行操做,region的分配的相關操做也會沒法進行。
熱門推薦:
以爲有價值請關注 ▼
本文分享自微信公衆號 - 老懞大數據(simon_bigdata)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。