HBase的儲存格式是什麼?
HBase中的所有資料檔案都儲存在Hadoop HDFS檔案系統上,主要包括上述提出的兩種檔案型別:
1. HFile, HBase中KeyValue資料的儲存格式,HFile是Hadoop的二進位制格式檔案,實際上StoreFile就是對HFile做了輕量級包裝,即StoreFile底層就是HFile
2. HLog File,HBase中WAL(Write Ahead Log) 的儲存格式,物理上是Hadoop的Sequence File
HFile
下圖是HFile的儲存格式:
首先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內容就是一些隨機數字,目的是防止資料損壞。後面會詳細介紹每個KeyValue對的內部構造。
HFile裡面的每個KeyValue對就是一個簡單的byte陣列。但是這個byte陣列裡麵包含了很多項,並且有固定的結構。我們來看看裡面的具體結構:
開始是兩個固定長度的數值,分別表示Key的長度和Value的長度。緊接著是Key,開始是固定長度的數值,表示RowKey的長度,緊接著是RowKey,然後是固定長度的數值,表示Family的長度,然後是Family,接著是Qualifier,然後是兩個固定長度的數值,表示Time Stamp和Key Type(Put/Delete)。Value部分沒有這麼複雜的結構,就是純粹的二進位制資料了。
HLogFile
上圖中示意了HLog檔案的結構,其實HLog檔案就是一個普通的Hadoop Sequence File,Sequence File 的Key是HLogKey物件,HLogKey中記錄了寫入資料的歸屬資訊,除了table和region名字外,同時還包括 sequence number和timestamp,timestamp是“寫入時間”,sequence number的起始值為0,或者是最近一次存入檔案系統中sequence number。
HLog Sequece File的Value是HBase的KeyValue物件,即對應HFile中的KeyValue。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15498/viewspace-1876022/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 什麼是物件儲存?物件
- HBase 教程:什麼是 HBase?
- 什麼是YottaChain儲存,為什麼說是未來資料儲存的趨勢?AI
- SRAM是什麼儲存器
- 資料庫mysql儲存是什麼?可以存什麼?資料庫MySql
- 什麼是HDFS 分散式儲存分散式
- electron-store會將資料儲存為什麼格式
- 快照是什麼?揭祕儲存快照的實現
- 塊儲存是做什麼用的,你知道嗎?
- 共享儲存是什麼意思?與DRBD有什麼區別?
- Mysql 行的儲存格式MySql
- HBase 資料儲存結構
- 什麼是庫存?什麼是零庫存?庫存的定義
- 在Linux中,什麼是SAN和NAS儲存?Linux
- jsonc是什麼格式JSON
- 為什麼延遲是儲存中最重要的指標指標
- 什麼是大資料系統儲存及管理?大資料
- 什麼是雲原生?為什麼是Portworx來解決雲原生儲存問題?
- JavaScript的註釋格式是什麼JavaScript
- 一文講清HBase的儲存結構
- 雲原生時代 容器持久化儲存的最佳方式是什麼?持久化
- 計算機中的層次化儲存是個什麼鬼?計算機
- AI儲存的需求是什麼?未來趨勢是怎樣的?AI
- 網路儲存伺服器是什麼有哪些功能伺服器
- 【知識分享】什麼是網路儲存伺服器伺服器
- Nebula Storage 2.0 儲存格式
- hive檔案儲存格式Hive
- MySQL 的 NULL 值是怎麼儲存的?MySqlNull
- iCloud是什麼?怎麼關閉“icloud儲存空間不足”提醒?Cloud
- txt是什麼格式的檔案 txt格式怎麼弄出來
- 為什麼Kubernetes的儲存如此艱難?
- plt是什麼格式檔案
- 物件儲存的優勢有哪些?為什麼要選擇物件儲存?物件
- 什麼是Amazon S3?Amazon簡單儲存服務S3
- 一文講清HBase儲存結構
- 什麼是行儲存和列儲存?正排索引和倒排索引?MySQL既不是倒排索引,也索引MySql
- 為什麼說UFS儲存晶片是手機儲存的未來?宏旺半導體一文解析晶片
- csv是什麼格式檔案 csv檔案是什麼意思
- ofd是什麼格式的檔案 ofd格式檔案用什麼軟體開啟