檢視hfile是hbase本身自帶的乙個很實用的工具
使用也很簡單:
$ $/bin/hbase org.apache.hadoop.hbase.io.hfile.hfile
usage: hfile [-a] [-b] [-e] [-f ] [-k] [-m] [-p] [-r ] [-v]
-a,--checkfamily enable family check
-b,--printblocks print block index meta data
-e,--printkey print keys
-f,--file file to scan. pass full-path; e.g.
hdfs://a:9000/hbase/.meta./12/34
-k,--checkrow enable row order check; looks for out-of-order keys
-m,--printmeta print meta data of file
-p,--printkv print key/value pairs
-r,--region region to scan. pass region name; e.g. '.meta.,,1'
-v,--verbose verbose output; emits file and meta data delimiters
工作中用到過該工具的幾個場景:
1.測試或應用中,發現資料正確性有誤,可以使用該工具,看看hfile中的真實資料
2.業務反映scan某錶沒反應,直到超時,服務端日誌中無任何異常,後來直接分析hfile,發現使用者設定了ttl,所有資料都已經過期了,所以scan變成了全表掃瞄了,orz。。。
Hbase原始碼分析3 從Put到HFile
hbase插入資料的過程大致是 客戶端提交請求給region server 這中間會有作一些快取 region server接收到請求,判斷其實put請求,將其put到memstore 每次memstore的操作,都會檢查memstore是否操作乙個閾值,如果超過,就開始執行flush 這個flus...
Hbase原始碼分析3 從Put到HFile
hbase插入資料的過程大致是 客戶端提交請求給region server 這中間會有作一些快取 region server接收到請求,判斷其實put請求,將其put到memstore 每次memstore的操作,都會檢查memstore是否操作乙個閾值,如果超過,就開始執行flush 這個flus...
Hbase原始碼分析3 從Put到HFile
hbase插入資料的過程大致是 客戶端提交請求給region server 這中間會有作一些快取 region server接收到請求,判斷其實put請求,將其put到memstore 每次memstore的操作,都會檢查memstore是否操作乙個閾值,如果超過,就開始執行flush 這個flus...