國家質(zhì)檢總局網(wǎng)站品牌建設(shè)河南省干部任免最新公示
1.?背景
當(dāng)前,線上HBase集群的自動Major Compact是關(guān)閉的,我們選擇在凌晨業(yè)務(wù)空閑的時候進行手動觸發(fā)Major Compact,Compact工具就是在運維平臺上對資源組、RS、表進行Major Compact。目前線上有2種版本的Compact程序:Compact_v1和Compact,Compact_v1是基于Compact做了部分優(yōu)化。在實際運行中,也發(fā)現(xiàn)有部分Compact任務(wù)運行失敗,并且該工具目前處于無人運維的狀態(tài)。本文對該工具從輸入、代碼流程、使用方法進行說明,并且后續(xù)會持續(xù)對該文檔進行補充,增加線上運行失敗的原因分析和改進。
2. Compact_v1
2.1 程序輸入
序號 | 參數(shù)名 | 參數(shù)含義 | 是否必選 | 備注 |
---|---|---|---|---|
1 | cluster | 集群名 | 是 | |
2 | rsgroup | 資源組 | 是 | |
3 | cmd | 執(zhí)行命令類型,支持 compact_server、compact_rsgroup、compact_table | 是 | |
4 | parameter | 對應(yīng)cmd的參數(shù),如果是compact_server則為具體的機器名,如果是compact_rsgroup則為具體的rsgroup,如果是compact_table,則為具體的table | 是 | |
5 | batchSize | 一次批量添加任務(wù)的大小 | 是 | |
6 | queueLimit | Major Compaction隊列長度限制 | 是 | |
7 | mcInterval | Major Compaction時間間隔,單位毫秒 | 是 | |
8 | mcTaskExecutionTime | Major Compaction任務(wù)執(zhí)行的時間,單位毫秒 | 是 | |
9 | execute | 是否執(zhí)行任務(wù),如果為false,則僅輸出執(zhí)行計劃 | 是 | |
10 | compactNum | 執(zhí)行Major Compaction的并發(fā)線程數(shù) | 否 | 默認為1 |
2.2 程序流程圖
2.2.1 總體流程圖
?
2.2.2詳細流程圖
圖1是Compact_v1版本程序的詳細流程圖。
?
?
?
其中executePlan的流程圖入圖2所示:
?
??
ServerCompactBatchTask是集成了Callable<Boolean>的類,其中call方法的流程圖如圖3所示:
?
?
3 Compact
3.1 程序輸入
序號 | 參數(shù)名 | 參數(shù)含義 | 是否必選 | 備注 |
---|---|---|---|---|
1 | cluster | 集群名 | 是 | |
2 | rsgroup | 資源組 | 是 | |
3 | cmd | 執(zhí)行命令類型,支持 compact_server、compact_rsgroup、compact_table | 是 | |
4 | parameter | 對應(yīng)cmd的參數(shù),如果是compact_server則為具體的機器名,如果是compact_rsgroup則為具體的rsgroup,如果是compact_table,則為具體的table | 是 | |
5 | batchSize | 一次批量添加任務(wù)的大小 | 是 | |
6 | queueLimit | Major Compaction隊列長度限制 | 是 | |
7 | mcInterval | Major Compaction時間間隔,單位毫秒 | 是 | |
8 | mcTaskExecutionTime | Major Compaction任務(wù)執(zhí)行的時間,單位毫秒 | 是 | |
9 | execute | 是否執(zhí)行任務(wù),如果為false,則僅輸出執(zhí)行計劃 | 是 |
3.2 程序流程圖
3.2.1 總體流程圖
?
3.2.2 詳細流程圖
圖4是Compact版本程序的總體流程圖。
?
?
?
其中executePlan的方法的流程圖如圖5所示:
?
?
?
?
4. 兩個程序的區(qū)別
序號 | 區(qū)別 | 備注 |
---|---|---|
1 | compact_v1支持多線程對region執(zhí)行compact,compact僅支持單線程 | |
2 | compact_v1生成plan的時候,對plan中的region進行排序,compact沒有 | |
3 | compact_v1對plan隊列的每個plan進行了排序,compact沒有 | |
4 | sleep的時間不一樣,compact_v1短一點 | |
5. Compact程序線上問題分析
目前線上因為Compact_v1有失敗的,所以已經(jīng)將所有的Compact_v1改為Compact任務(wù)。
通過查看代碼,可以看到Compact_v1是基于Compact做了多個優(yōu)化,包括可以多線程執(zhí)行Compact、Region合并按照優(yōu)先級的順序執(zhí)行,各臺機器的Compact也是按照優(yōu)先級排序 ,所以建議采用Compact_v1的代碼。
線上執(zhí)行Compact_v1有失敗的問題,查看了運行日志,失敗基本都是超時導(dǎo)致,沒有打印出程序運行日志,所以目前先配置了幾個Compact_v1的定時任務(wù),通過增加日志的方式,每天查看任務(wù)運行狀況。
后續(xù)進展會在這里描述。