前言: 之前有朋友加好友與我探討一些問題,我覺得這些問題倒挺有價值的;於是就想在本公眾號開設一個問答專欄,方便技術交流與分享,專欄名就定為: 《讀者來信》 。歡迎關註本人微信公眾號《HBase工作筆記》,掃描文末二維碼解鎖更多姿勢! 來信人:羅 銘 小猿提問 如何判斷HBase Major Comp ...
前言:之前有朋友加好友與我探討一些問題,我覺得這些問題倒挺有價值的;於是就想在本公眾號開設一個問答專欄,方便技術交流與分享,專欄名就定為:《讀者來信》。歡迎關註本人微信公眾號《HBase工作筆記》,掃描文末二維碼解鎖更多姿勢!
來信人:羅*銘
小猿提問
如何判斷HBase Major Compact是否執行完畢?
小猿解答
這裡提供兩種查看方式:
一種是HBase WebUI 界面; 另外一種是HBase Shell命令行 。
我們下麵看一下。
1. HBase WebUI
點擊Web首頁Compactions按鈕查看每一個RS Compact完成情況;
點擊ServerName進入RS Web頁後點擊Compaction Metrics可查看該RS上每一個Region Compact 完成情況。
2. HBase Shell
通過Shell方式查看同WebUI查看大同小異,只不過沒有將這些指標可視化而已。如果有興趣,可以自己採集這些指標做一個漂亮的監控界面~
通過命令 status 'simple' 可查看HBase RS級別的一些指標,其中 compactionProgressPct=1.0 即表明RS Compact完成。如下:
hbase(main):002:0> status 'simple'
active master: xxx.xx.xx.xx:6000 1539254611835
1 backup masters
xxx.xx.xx.xx:6000 1539254627238
4 live servers
xxx.xx.xx.xx:6002 1575619570126
requestsPerSecond=211.0,
numberOfOnlineRegions=293,
usedHeapMB=4861,
maxHeapMB=16384,
numberOfStores=293,
numberOfStorefiles=432,
storefileUncompressedSizeMB=97691,
storefileSizeMB=35689,
compressionRatio=0.3653,
memstoreSizeMB=891,
storefileIndexSizeMB=0,
readRequestsCount=738897443,
writeRequestsCount=717989941,
rootIndexSizeKB=5413,
totalStaticIndexSizeKB=149724,
totalStaticBloomSizeKB=63325,
totalCompactingKVs=1389414755,
currentCompactedKVs=1389414755,
compactionProgressPct=1.0,
coprocessors=[HBaseSimHashSetBuildSystem, MultiRowMutationEndpoint]
xxx.xx.xx.xx:6002 1575619966048
...
0 dead servers
Aggregate load: 962, regions: 1176
通過命令 status 'detailed' 可查看HBase RS Region 級別的一些指標,其中 compactionProgressPct=1.0 即表明RS Compact完成。如下:
hbase(main):002:0> status 'detailed'
active master: xxx.xx.xx.xx:6000 1539254611835
1 backup masters
xxx.xx.xx.xx:6000 1539254627238
4 live servers
xxx.xx.xx.xx:6002 1575619570126
"namespace:table,20,1577443984105.518a1fbd9dd64e5956e591fa23556f48."
numberOfStores=1,
numberOfStorefiles=1,
storefileUncompressedSizeMB=0,
lastMajorCompactionTimestamp=0,
storefileSizeMB=0,
memstoreSizeMB=0,
storefileIndexSizeMB=0,
readRequestsCount=0,
writeRequestsCount=0,
rootIndexSizeKB=0,
totalStaticIndexSizeKB=0,
totalStaticBloomSizeKB=0,
totalCompactingKVs=332285,
currentCompactedKVs=332285,
compactionProgressPct=1.0,
completeSequenceId=-1,
dataLocality=1.0
"namespace:table,1f,1577443984105.61c4ba95dbed1eb52da78c448e2f4bbf."
...
0 dead servers
知識點補充
1. 計算公式
在上面的Shell命令行輸出中我們還看到有兩個與Compact相關的指標,分別是totalCompactingKVs 與 currentCompactedKVs。其實指標 compactionProgressPct 正是由二者計算得來,如下:
float compactionProgressPct = Float.NaN;
if( this.totalCompactingKVs > 0 ) {
compactionProgressPct = Float.valueOf(
this.currentCompactedKVs / this.totalCompactingKVs);
}
2. 小版本bug
可能有的朋友會發現自己家的 HBase compactionProgressPct 指標出現了大於100% 情況,或是 currentCompactedKVs>totalCompactingKVs 等情況,其實這是HBase小版本出現的一個bug,該bug在 2.0.0-beta 版本中才修複完畢。相關jira 如下:
- HBASE-19767
- HBASE-15906
- HBASE-11979
轉載請註明出處!歡迎關註本人微信公眾號【HBase工作筆記】