HBase存儲數據的文件格式是什么 hbase中數據存儲的文件格式是什么


HBase存儲數據的文件格式是什么 hbase中數據存儲的文件格式是什么

文章插圖
StoreFile是HBase存儲數據的文件格式 。
HFile的邏輯結構HFile邏輯結構圖HFile的邏輯結構
邏輯結構說明4大部分
  • Scanned block section
    • 掃描StoreFile時,所有的Data Block(數據塊)都將會被讀取
    • Leaf Index(LSM + C1樹索引)、Bloom block(布隆過濾器)都會被讀取
  • Non-scanned block section
    • 掃描StoreFile時,不會被讀取
    • 包含MetaBlock和Intermediate Level Data Index Blocks
  • Opening-time data section
    • 在RegionServer啟動時,需要將數據加載到內存中,包括數據塊索引、元數據索引、布隆過濾器、文件信息 。
  • Trailer
    • 記錄了HFile的基本信息
    • 各個部分的偏移值和尋址信息
StoreFile物理結構StoreFile是以Hfile的形式存儲在HDFS上的 。Hfile的格式為下圖:
StoreFile物理結構
  • HFile文件是不定長的,長度固定的只有其中的兩塊:Trailer和FileInfo 。正如圖中所示的,Trailer中有指針指向其他數 據塊的起始點 。
  • File Info中記錄了文件的一些Meta信息,例如:AVG_KEY_LEN, AVG_VALUE_LEN, LAST_KEY, COMPARATOR, MAX_SEQ_ID_KEY等
  • Data Index和Meta Index塊記錄了每個Data塊和Meta塊的起始點 。
  • Data Block是HBase I/O的基本單元,為了提高效率,HRegionServer中有基于LRU的Block Cache機制 。每個Data塊的大小可以在創建一個Table的時候通過參數指定,大號的Block有利于順序Scan,小號Block利于隨機查詢 。每個Data塊除了開頭的Magic以外就是一個個KeyValue對拼接而成, Magic內容就是一些隨機數字,目的是防止數據損壞 。
  • HFile里面的每個KeyValue對就是一個簡單的byte數組 。但是這個byte數組里面包含了很多項,并且有固定的結構 。我們來看看里面的具體結構:
  1. 開始是兩個固定長度的數值,分別表示Key的長度和Value的長度
  2. 緊接著是Key,開始是固定長度的數值,表示RowKey的長度
  3. 緊接著是 RowKey,然后是固定長度的數值,表示Family的長度
  4. 然后是Family,接著是Qualifier
  5. 然后是兩個固定長度的數值,表示Time Stamp和Key Type(Put/Delete)——每一種操作都會生成一個Key-Value 。Value部分沒有這么復雜的結構,就是純粹的二進制數據了 。
  • Data Block段
保存表中的數據,這部分可以被壓縮
  • Meta Block段 (可選的)
保存用戶自定義的kv對,可以被壓縮 。
  • File Info段
Hfile的元信息,不被壓縮,用戶也可以在這一部分添加自己的元信息 。
  • Data Block Index段
Data Block的索引 。每條索引的key是被索引的block的第一條記錄的key 。
  • Meta Block Index段 (可選的)
Meta Block的索引 。
  • Trailer
這一段是定長的 。保存了每一段的偏移量,讀取一個HFile時,會首先 讀取Trailer,Trailer保存了每個段的起始位置(段的Magic Number用來做安全check),然后,DataBlock Index會被讀取到內存中,這樣,當檢索某個key時,不需要掃描整個HFile,而只需從內存中找到key所在的block,通過一次磁盤io將整個 block讀取到內存中,再找到需要的key 。DataBlock Index采用LRU機制淘汰
【HBase存儲數據的文件格式是什么 hbase中數據存儲的文件格式是什么】


    以上關于本文的內容,僅作參考!溫馨提示:如遇健康、疾病相關的問題,請您及時就醫或請專業人士給予相關指導!

    「愛刨根生活網」www.malaban59.cn小編還為您精選了以下內容,希望對您有所幫助: