1、介紹HBase叢集上region數目由于業務驅動而越來越多,由于伺服器本身,網絡以及hbase内部的一些不确定性bug等因素使得這些region可能面臨着不可用或響應延時情況。通過對region的監控,也可以反映出hdfs叢集的狀況
2、工具
org.apache.hadoop.hbase.tool.Canary 監控Region的可用和讀寫狀況
Usage: bin/hbase org.apache.hadoop.hbase.tool.Canary [opts] [table 1 [table 2...]]
where [opts] are:
-help Show this help and exit.
-daemon Continuous check at defined intervals.
-interval <N> Interval between checks (sec)
例如:執行${HBASE_HOME}/bin/hbase org.apache.hadoop.hbase.tool.Canary day_hotstatic 結果資訊如下:
read from region day_hotstatic,860010-2061300100_20131109_10_visit_00000027262,1386598604054.22af453addaff05464e585e7d148987b. column family c in 4msread from region day_hotstatic,860010-2061300100_20131201_2_exit_00000012418,1387389193938.9d19cd65ac9f9c3c2a04911cb73cfef7. column family c in 0ms
原理:它預設會取出Region的startKey,按照ColumnFamily分别執行一次Get操作,并列印出系統的延遲。對于Region出問題的情況下,會列印出failed的狀态。
2、不足
1)無法提供Region服務異常的實時報警。
2)未提供對于延遲的監控與報警。
基于此,我們就可以添加相應的報警功能,找出延遲超過最高限或者Region有問題的Table,并通過郵件或者message及時告警。
在出現hfile檔案無法seek或者Region offline的情況下,通過HBaseAdmin.assign(regionName)接口重新部署一次Region,這樣可以避免:
①.Region上storefile不一緻(與hdfs上region顯示不一樣),在compaction異常或者split過程中。通過重新assign下可以重新加載這部分資料
②.Region處于Offline狀态,比如regionserver當機,叢集負載均衡等過程中region offline等