hfile檔案
儲存在磁碟的hbase表資料檔案, 格式為hfile。資料塊為儲存單元, 預設認大小64kb。
memstore
寫快取,由於hfile中的資料要求是有序的,資料是先在memstore中,排好序後,再刷寫到hfile. 每次刷寫都會形成乙個新的hfile。
wal
資料會先寫wal(write-ahead logfile)日誌檔案檔案中,然後再寫入memstore中。以便在memstore(記憶體)中的資料丟失後可以恢復.
每間隔hbase.regionserver.optionallogflushinterval(預設1s), hbase會把操作從記憶體寫入wal. 乙個regionserver上的所有region共享乙個wal例項。
wal的檢查間隔由hbase.regionserver.logroll.period定義,預設值為1小時。檢查的內容是把當前wal中的操作跟實際持久化到hdfs上的操作比較,看哪些操作已經被持久化了,被持久化的操作就會被移動到.oldlogs資料夾內(這個資料夾也是在hdfs上的)。blockcache乙個wal例項包含有多個wal檔案。wal檔案的最大數量通過hbase.regionserver.maxlogs(預設是32)引數來定義。
讀快取,每次查詢出的資料會快取在blockcache中,方便下次查詢.
寫流程client先訪問zookeeper,獲取hbase:meta表所在的region server, 查詢hbase:meta表獲取目標redgion server. 在將該錶的region資訊以及meta表的位置資訊快取在客戶端的meta cache之後與目標region sever進行通訊;
將資料順序寫入(追加)到wal;
將資料寫入對應的memstore,資料會在memstore進行排序;
向客戶端傳送ack, 等達到memstore的刷寫時機後,將資料刷寫到hfile。
client先訪問zookeeper,獲取hbase:meta表所在的region server, 查詢hbase:meta表獲取目標redgion server. 在將該錶的region資訊以及meta表的位置資訊快取在客戶端的meta cache之後與目標region sever進行通訊;
分別在block cache(讀快取),memstore和store file(hfile)中查詢目標資料,並將查到的所有資料塊進行合併, 之後快取到block cache中。
此處所有資料是指同一條資料的不同版本(time stamp)或者不同的型別(put/delete)。將合併後的最終結果返回給客戶端。
hbase讀寫流程
HBase的寫流程和讀流程
1.獲取meta表的rootregion位置資訊 在客戶端寫程序時,第一次寫時,client先通過zookeeper獲取到meta表對應的region位置資訊,然後加入到程序快取中,後續再讀寫時,直接讀取快取的meta資訊對應的region資訊就行.2.找到資料要寫在哪個region上 根據獲取到的...
Hbase讀流程詳解
關鍵元件 讀快取block cache 磁碟讀的資料 memstore hstore 定位操作和寫流程中的一致關鍵字zk meta region server meta表所在位置 meta表結構 根據table和row key所在範圍 定位region 讀操作 記憶體 磁碟 一起都讀 讀完後要合併m...
HBase之寫資料流程
1.客戶端訪問zookeeper獲取hbase meta表所在的regionserver資訊。2.與對應regionserver通訊,獲取meta表,根據寫請求引數查詢出應寫入到哪個regionserver中的哪個region中,把該錶的region資訊和meta表的位置資訊儲存在客戶端本地meta...