HBase架構簡談

2021-10-11 02:12:44 字數 1230 閱讀 6151

作者的思考,建議結合《hbase權威指南》第8章一起看。。。

1.hbase是如何保證快速讀取 

以支援實時資料開發的(相比hive和hadoop的批處理)?

hbase在hdfs上磁碟資料結構為lsm(可以看成b樹),按rowkey有序,複雜度為log(n)(當然與樹節點元素數量有關):可以理解為對rowkey進行查詢比傳統資料庫還快(如果沒有對索引欄位where查詢)。

關聯知識:

資料庫原理索引:資料磁碟尋道、b樹索引結構

hbase的region:hbase的一張表可以分成多個region,每個region負責一段順序rowkey(如:row1-row100在region1上,row101-row200在region2上。。。),這樣無論資料如何橫向擴充套件,每個region管理的資料都只有那麼多,不會因為樹深度的增加而增加訪問時間。

2.hbase是如何保證資料安全性的?(當然是日誌系統

資料寫入記憶體(memstore)前,先寫入日誌(hlog),當機器宕機也可以根據日誌進行資料恢復。

關聯知識:

hlog(乙個伺服器乙個日誌):寫入的資料順序儲存在hlog檔案上(已經在hdfs上保持了)。hregionserver上可能有很多表,很多region,宕機了日誌是如何被利用的呢?日誌上還沒有存到region磁碟上的資料分發到各自的region上進行恢復(都給到位了,直接存就行了)。

memstore:所有memstore上的資料加起來和hlog上沒有儲存到region磁碟上的資料相等(相當於一摸一樣的資料)。如果memstore上的資料儲存到region磁碟上去了,hlog上的資料不就沒用了麼?資料已經持久化了,當然沒用了,就可以根據儲存到磁碟上的資料的最大時間戳來判斷,日誌上小於這個時間戳的資料都已經儲存了。

這裡引發了我的疑問:1.乙個memstore達到flush資料刷寫要求了,難道乙個hregionserver上所有的memstore都要同時刷寫麼,不然hlog還選出這個memstore上的資料標記麼?

關於疑問的推論:是否是每個region中的每個store都記錄乙個最大時間戳,hlog中記錄的關於乙個region中的乙個store的資料,如果時間戳小於記錄的最大時間戳,那說明資料已經被處理了,資料恢復時就可以過濾掉。

3.hbase是如何保證資料快速寫入的?(直接記憶體當然很快)

順序寫入到hlog上後直接寫入記憶體,邏輯上資料就已經成功寫入了。

HBASE部分 HBASE的架構

hbase的架構 包含訪問hbase的介面並維護cache來加快對hbase的訪問 zookeeper 保證任何時候,集群中只有乙個master 存貯所有region的定址入口。實時監控region server的上線和下線資訊。並實時通知master 儲存hbase的schema和table元資料...

HBase 架構組成

主要負責hregionserver的協調管理及table的ddl操作 新增 更新和刪除 hregionserver的管理包含兩方面 監控hregionserver的執行狀態 從zk接受通知 region的分配 hregionserver擴容 宕機及負載均衡等情況 hmaster的ha解決方案 主備切...

HBase架構解析

hbase是存大資料的,之前也用過,一直沒好好的梳理下整個原理,通過網上搜尋和阿里大學的免費課程,總結了一下,希望對大家有所幫助,理論都是無聊的,希望大家能耐下心來一起成長。client就是你的 順序是這樣的 1 先訪問zookeeper,獲取region server位址。2 client再去訪問...