資料的讀寫流程不依賴於master,但是長期在沒有master的情況下進行資料的讀寫是不健康的。例如,當乙個region過大進行切分之後,沒有master是無法把切分後的資料分配到其他節點上去的。
寫流程:
請求regionserver找到meta表
通過meta的內容找到目標寫入資料的位置資訊
通過位置資訊,往目標表中寫入資料。先寫wal檔案,再寫入記憶體(客戶端操作到此為止)
後續再把檔案寫入到storefile中
關於flush:
讀流程:
hbase因為儲存機制的原因,讀流程不論什麼情況都是要讀取磁碟資訊的,所以過程比較慢。
如下圖所示,hbase讀取資料並不是按照block cache–>memstore–>storefile這樣的順序讀取的,而是三個部分都需要讀取,最後比較取出的相同的rowkey中時間戳最靠後的那一條顯示出來。block cache中有的資料,在讀取storefile的時候可以不必再讀取,但僅僅只是那一條資料檔案不用讀取而已。
一定要讀磁碟主要是為了防止後寫入的資料在記憶體中還未刷寫,但是它的時間戳是自定義的,比磁碟記錄的時間戳更靠前,而唯讀到記憶體就會導致讀出的資料不是時間戳最後的資料。
HBase讀寫流程詳細解讀
插入一條資料到某個表,因為hbase通過zookeeper協調 client 首先連線zookeeper,從zookeeper中獲取表region相關資訊。根據要插入的rowkey,獲取指定的regionserver資訊,如果是批量提交的話,會把rowkey根據hregion location進行分...
HBase架構及讀寫流程
hbase架構分析 負責管理hbase元資料,即表的結構 表儲存的region等元資訊。負責表的建立,刪除和修改 因為這些操作會導致hbase元資料的變動 負責為hregionserver分配region,分配好後也會將元資料寫入相應位置 後面會詳細講述放在哪 如果對可用性要求較高,它需要做ha高可...
HBase資料讀寫
hbase寫資料架構圖 hbase寫過程如下 先將資料寫到wal中 wal存放在hdfs上 每次put delete操作的資料均追加到wal末端 持久化到wal之後,再寫到memstore中 兩者寫完返回ack客戶端。memstore其實是一種記憶體結構,乙個column family對應乙個mem...