Hbase資料內部的儲存過程

2021-09-26 13:58:30 字數 1182 閱讀 1103

wal:預寫日誌(write ahead log)。當操作到達region的時候,hbase先把資料寫到wal中,再把資料寫到memstore中,等資料達到閾值時才會被刷寫(flush)到最終儲存的hfile中。wal是乙個保險機制,這樣在region的機器宕機時,由於wal的資料是儲存在hdfs中的,可以從wal中恢復資料,所以資料並不會丟失。

blockcache:讀快取,用於在記憶體中快取經常被讀的資料。least recently used (lru) 資料在存滿時會被失效。

region:region相當於乙個資料的分片。每乙個region都有起始rowkey和結束rowkey,這表示了region的儲存的row的範圍。乙個regionserver包含多個region,乙個表的一段鍵值在乙個regionserver上會產生乙個region。在乙個regionserver中有乙個或多個region。

store:乙個region包含多個store,乙個列族分為乙個store,如果乙個表只有乙個列族,那麼這個表在這台機器上的每乙個region裡面都只有乙個store。store是hbase的儲存核心,乙個store裡面有乙個memstore和乙個或多個hfile。

memstore:有序的記憶體緩衝區,用於快取還未被持久化到磁碟的資料,在持久化之前會先將資料排序,每個region的每個列族(store)都有乙個 memstore。

hfile:真正存在硬碟上的,對資料按照rowkey排好序的鍵值對檔案。每次memstore的flush會產生新的hfile檔案。

使用者寫入的資料先寫入wal,然後寫入memstore,當memstore滿了以後會flush成乙個storefile(儲存為hfile),當storefile數量到達一定閾值,會觸發compact合併,將多個storefile合併成乙個storefile。storefiles合併後會逐漸形成越來越大的storefile,當region內的所有的storefiles的總的大小超過閾值(hbase.hregion.max.filesize)會觸發split操作。會把當前region split成兩個region,父region下線,新split的兩個子region被master分配到合適的regionserver上,使得原先乙個region的壓力分流到兩個region上。

HBase資料儲存

hbase的資料檔案都儲存在hdfs上,格式主要有兩種 hfile hbase中keyvalue資料的儲存格式,hfile是hadoop的二進位制檔案,實際上storefile就是對hfile做了輕量級的包裝,即storefile底層就是hfile hlog file hbase中wal write...

HBASE 資料儲存實踐

hbase 來自hadoop database 是乙個很好的bigtable的實現,能夠儲存上百億行和百萬列的資料,是乙個高可靠性 高效能 面向列 可伸縮的分布式儲存系統。hbase的基本架構組成如下 hbase使用zookeeper作為協調服務,每個時刻只有乙個hmaster在執行,hmaster...

Hadoop資料儲存 Hbase

大家都知道hadoop是乙個資料庫,其實說的的就是hbase。它和我們平常理解的關係型資料庫有什麼區別呢?1.它是nosql的,它沒有sql的介面,有自己的一套api。通過以上描述,我們分析一下hbase的特點 1 儲存海量資料 pb 2 高吞吐 每秒每個節點上千次寫 3 適合處理稀疏資料 半結構化...