10大HBase常見運維工具整理
摘要:HBase自帶許多運維工具,為使用者提供管理、分析、修復和除錯功能。本文將列舉一些常用HBase工具,開發人員和運維人員可以參考本文內容,利用這些工具對HBase進行日常管理和運維。
HBase元件介紹
HBase作為當前比較熱門和廣泛使用的NoSQL資料庫,由於本身設計架構和流程上比較複雜,對大資料經驗較少的運維人員門檻較高,本文對當前HBase上已有的工具做一些介紹以及總結。
寫在前面的說明:
1) 由於HBase不同版本間的差異性較大(如HBase2.x上移走了hbck工具),本文使用的所有命令列執行的環境為MRS_1.9.3,對應的HBase版本為1.3.1,部分命令在HBase2上不支援(有時間的話會對HBase2做單獨的介紹)。
2) 本文所涉及的HBase工具均為開源自帶工具,不涉及廠商自研的最佳化和運維工具。
Canary工具
HBase Canary是檢測HBase叢集當前狀態的工具,用簡單的查詢來檢查HBASE上的region是否可用(可讀)。它主要分為兩種模式
1) region模式(預設),對每個region下每個CF隨機查詢一條資料,列印是否成功以及查詢時延。
#對t1和tsdb-uid表進行檢查
hbase org.apache.hadoop.hbase.tool.Canary t1 tsdb-uid
#注意:不指定表時掃所有region
2) regionserver模式,對每個regionserver上隨機選一個表進行查詢,列印是否成功以及查詢時延。
#對一個regionserver進行檢查
hbase org.apache.hadoop.hbase.tool.Canary -regionserver node-ana-coreQZLQ0002.1432edca-3d6f-4e17-ad52-098f2adde2e6.com
#注意:不指定regionserver時掃所有regionserver
Canary還可以指定一些簡單的引數,可以參考如下
總結:
- 對叢集影響:2星(只是簡單的讀操作,region個數極多的時候會佔用少部分請求吞吐)
- 實用性:2星
HFile工具
HBase HFile檢視工具,主要用來檢查當前某個具體的HFile的內容/後設資料。當業務上發現某個region無法讀取,在regionserver上由於檔案問題無法開啟region或者讀取某個檔案出現異常時,可用此工具單獨來檢查HFile是否有問題
#檢視t1表下的其中一個HFile的詳情,列印KV
hbase org.apache.hadoop.hbase.io.hfile.HFile -v -m -p -f /hbase/data/default/t1/4dfafe12b749999fdc1e3325f22794d0/cf1/06e102be436c449693734b222b9e9aab
使用引數如下:
總結:
- 對叢集影響:1星(此工具不走HBase通道,只是單純的讀取檔案,不影響叢集)
- 實用性:4星(可精確判斷具體的HFile內容是否有問題)
RowCounter和CellCounter工具
RowCounter 是用MapReduce任務來計算錶行數的一個統計工具。而和 RowCounter類似,但會收集和表相關的更細節的統計資料,包括:表的行數、列族數、qualifier數以及對應出現的次數等。兩個工具都可以指定row的起止位置和timestamp來進行範圍查詢
# RowCounter掃描t1
hbase org.apache.hadoop.hbase.mapreduce.RowCounter t1
#用CellCounter掃描t1表並將結果寫入HDFS的/tmp/t1.cell目錄
hbase org.apache.hadoop.hbase.mapreduce.CellCounter t1 /tmp/t1.cell
使用引數如下:
總結:
- 對叢集影響:3星(需要起MapReduce對錶所有region進行scan,佔用叢集資源)
- 實用性:3星(HBase統計自身錶行數的唯一工具, hbase shell中count效率比較低)
Clean工具
clean命令是用來清除HBase在ZooKeeper合HDFS上資料的工具。當叢集想清理或剷除所有資料時,可以讓HBase恢復到最初的狀態。
#清除HBase下的所有資料
hbase clean --cleanAll使用引數如下:
總結:
- 對叢集影響:5星(刪除HBase叢集上所有資料)
- 實用性:2星(除開需要重新設定HBase資料的場景如要切換到HBase on OBS,平時很少會用到)
HBCK工具
HBase的hbck工具是日常運維過程中使用最多的工具,它可以檢查叢集上region的一致性。由於HBase的RIT狀態較複雜也最容易出現問題,日常運維過程中經常會遇到region不線上/不一致等問題,此時就可以根據hbck不同的檢查結果使用相應的命令進行修復。
#檢查t1表的region狀態
hbase hbck t1
#修復t1表的meta並重新assign分配
hbase hbck -fixMeta -fixAssignments t1
由於該工具使用的場景太多太細,此處就不作展開介紹了,可以檢視引數的描述來對各種異常場景進行修復。注意:在不清楚異常原因的情況下,千萬不要亂使用修復命令病急亂投醫,很有可能會使問題本身更糟糕。
使用引數如下:
總結:
- 對叢集影響:4星(個別meta相關命令對叢集影響極大)
- 實用性:5星(hbck是HBase運維人員的最基本運維工具)
RegionSplitter工具
RegionSplitter是HBase的Pre-splitting工具,在table初始化的時候如果不配置pre-split的話,HBase不知道如何去split region,這就很大可能會造成後續的region/regionserver的熱點,最好的辦法就是首先預測split的切分點,在建表的時候做pre-splitting,保證一開始的業務訪問總體負載均衡。RegionSplitter能夠透過具體的split演算法在建表的時候進行pre-split,自帶了兩種演算法:
- HexStringSplit
使用8個16進位制字元來進行split,適合row key是十六進位制的字串(ASCII)作為字首的時候
- UniformSplit
使用一個長度為8的byte陣列進行split,按照原始byte值(從0x00~0xFF)右邊以00填充。以這種方式分割槽的表在Put資料的時候需要對rowkey做一定的修飾, 比如原來的rowkey為rawStr,則需要對其取hashCode,然後進行按照byte位反轉後放在最初rowkey串的前面
#建立test_table表,並使用HexStringSplit演算法預分割槽10個
hbase org.apache.hadoop.hbase.util.RegionSplitter test_table HexStringSplit -c 10 -f f1
#Tips:此操作等價於在hbase shell中create ' test_table ', { NAME => 'f1'},{NUMREGIONS => 10, SPLITALGO => 'HexStringSplit'}
總結:
不管是HBase自帶的哪一種pre-split演算法,都是建立在表資料本身的rowkey符合它約定格式的條件下,實際使用者還是需要按業務來設計rowkey,並實現自己的pre-split演算法(實現SplitAlgorithm介面)
- 對叢集影響:1星(建立表操作,不影響其他叢集業務)
- 實用性:3星(實際pre-split都是按實際業務來的,對於測試來說可以使用HBase預設的split演算法來構造rowkey格式)
FSHLog工具
FSHLog是HBase自帶的一個WALs檔案檢查和split工具,它主要分為兩部分功能
- dump
將某個WAL檔案中的內容dump出來具體的內容
- split
觸發某個WAL資料夾的WAL split操作
#dump出某個當前的WALs檔案中的內容
hbase org.apache.hadoop.hbase.regionserver.wal.FSHLog --dump /hbase/WALs/node-ana-coreqzlq0002.1432edca-3d6f-4e17-ad52-098f2adde2e6.com,16020,1591846214733/node-ana-coreqzlq0002.1432edca-3d6f-4e17-ad52-098f2adde2e6.com%2C16020%2C1591846214733.1592184625801
相關引數
總結:
- 對叢集影響:2星(觸發的WAL split操作會對相應的Worker節點增加少量的負載,當需要split的WAL極大時,會對region級別的業務有影響)
- 實用性:4星(可以很好的檢查WAL內容的準確性,以及適用於WAL搬遷的場景)
WALPlayer工具
WALPlayer是一個將WAL檔案中的log回放到HBase的工具。可以透過對某個表或者所有表進行資料回放,也可以指定相應的時間區間等條件進資料回放。
#回放一個WAL檔案的資料到表t1
hbase org.apache.hadoop.hbase.mapreduce.WALPlayer /tmp/node-ana-coreqzlq0002.1432edca-3d6f-4e17-ad52-098f2adde2e6.com%2C16020%2C1591846214733.1592184625801 t1
Q&A:FSHLog和WALPlayer都能將WAL檔案中的資料恢復到HBase中,有什麼差異區別?
FSHLog是觸發WAL split請求到HMaster中,會對WAL中的所有資料恢復到HBase,走的是HBase自己的WAL split流程。而WALPlayer是本身起MR任務來掃WAL檔案中的資料,對符合條件的資料put到特定的表中或輸出HFile到特定目錄
相關引數:
總結:
- 對叢集影響:3星(起MR任務會佔用部分叢集資源)
- 實用性:4星(在某些特定的場景下實用性很高,如replication預同步,表資料恢復)
OfflineMetaRepair工具
OfflineMetaRepair工具由於修復HBase的後設資料。它會基於HBase在HDFS上的region/table後設資料,重建HBase後設資料。
#重新建立hbase的後設資料
hbase org.apache.hadoop.hbase.util.hbck.OfflineMetaRepair
Q&A: hbck的fixMeta同樣可以修復HBase的後設資料,還能指定具體的表使用更加靈活,還有必要使用OfflineMetaRepair?
hbck工具是HBase的線上修復工具,如果HBase沒有啟動是無法使用的。OfflineMetaRepair是在離線狀態修復HBase後設資料
相關引數:
總結:
- 對叢集影響:5星(備份原始後設資料表後,會重建HBase後設資料)
- 實用性:4星(當HBase由於後設資料原因無法啟動時,此工具可以恢復HBase)
Sweeper工具
Sweeper工具(HBASE-11644)可以合併HBase叢集中小的MOB檔案並刪除冗餘的MOB檔案。它會基於Column Family起相應的SweepJob任務來對相應的MOB檔案進行合併。注意,此工具不能與MOB的major compaction同時執行,並且同一個Column Family的Sweeper任務不能同時有多個一起執行。
#對t1表執行Sweeper
hbase org.apache.hadoop.hbase.mob.mapreduce.Sweeper t1 cf1
相關引數:
總結:
- 對叢集影響:5星(合併MOB任務會佔用大量的Yarn資源和IO,對業務影響很大)
- 實用性:2星(只適合MOB場景,使用MOB會存在HMaster上compact的瓶頸暫不推薦(社群HBASE3上才支援,相關jira HBASE-22749))
以上就是此次介紹的所有HBase運維工具,其他的如Bulkload批次匯入,資料遷移,測試相關的pe等暫不描述。如果有寫的不對的請指正,多謝。
官方文件:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2983/viewspace-2796532/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Hbase運維手冊運維
- rsync檔案同步工具常見模式有哪些?linux運維學模式Linux運維
- [面試題]大廠常見面試題整理面試題
- 四款常見IT自動化運維工具簡單介紹-行雲管家運維
- 基礎運維常見工作內容有哪些?運維
- redis持久化開發運維常見問題Redis持久化運維
- 常見的IT自動化運維工具有哪些?推薦一款好用的?運維
- IT運維淺見運維
- mongodb 常見運維監控和執行計劃MongoDB運維
- Linux運維常見筆試題(選擇題)Linux運維筆試
- 運維常見軟體問題排查與修復運維
- Java之常見異常 整理集合Java
- HashMap常見面試題整理HashMap面試題
- Vue常見面試題整理Vue面試題
- 整理kafka常見面試題Kafka面試題
- 前端常見問題整理前端
- 大資料常見的資料分析思維大資料
- SQLServer常用運維SQL整理SQLServer運維
- Oracle 常用運維命令整理Oracle運維
- rabbitmq 原理、叢集、基本運維操作、常見故障處理MQ運維
- Linux運維工程師 50個常見面試題Linux運維工程師面試題
- 常見Linux運維面試題,你答對了嗎?Linux運維面試題
- 【IT運維監控】幾大運維監控工具優缺點介紹運維
- 03常見運算子
- Javascript常見演算法整理JavaScript演算法
- 那些常見的面試題整理面試題
- 【面試】面試常見問題整理面試
- MySQL Replication常見錯誤整理MySql
- AIX常見問題整理(二)AI
- Linux發行版本常見的有哪些?Linux運維Linux運維
- 資料探勘常見10大問題
- 用自動化運維工具解放IT運維運維
- dataguard 常規運維操作運維
- JavaScript—常見設計模式整理(27)JavaScript設計模式
- ORACLE常見檢視和表整理Oracle
- Zabbix 常見問題處理整理
- 常見的資料庫模型有哪些?Linux運維入門資料庫模型Linux運維
- 10 大常見的web開發錯誤Web