HBCK2修復hbase2的常見場景


上一文章已經把HBCK2 怎么在小於hbase2.0.3版本的編譯與用法介紹了,解決主要場景

查看hbase存在的問題

一、使用hbase hbck命令

hbase hbck命令是對hbase的元數據進行檢查,看是否有不健康的region

image

問題1:Unable to read .tableinfo

使用 參數 generateMissingTableDescriptorFile
hbase org.apache.hbase.HBCK2 generateMissingTableDescriptorFile hbase:meta

問題2:region is not onlie 導致該表無法查詢

hbase后台報錯: xxx region is not onlie
hbase hbck檢測錯誤:
ERROR: Region { meta => kylin_metadata,,1626761168323.1d8cb3ce4a074d6a706c9fee570129df., hdfs => hdfs://master:8020/apps/hbase/data/data/default/kylin_metadata/1d8cb3ce4a074d6a706c9fee570129df, deployed => , replicaId => 0 } not deployed on any region server.

解決方式:

  1. 看到Regionname是:1d8cb3ce4a074d6a706c9fee570129df
  2. 執行命令重新分配 Region
  3. hbase org.apache.hbase.HBCK2 -d -s assigns 1d8cb3ce4a074d6a706c9fee570129df
  4. 如果有多個Region,直接寫代碼使用正則表達式[a-zA-Z0-9]{32}獲取所有錯誤信息里面的RegionName
    hbase org.apache.hbase.HBCK2 -d -s assigns RegionName1 RegionName2 RegionName3

問題3:hbase:namespace的regionoffline 導致master is initializing

解決方式:

  1. 查詢 hbase:meta表 hbase:namespace的region scan 'hbase:meta'

image

2.找到regionname
3. hbase org.apache.hbase.HBCK2 -d -s assigns regionname
4.desc 任意一個表,看是否能查詢

問題3 region is closing ,region被lock

  1. 先去hbase ui的
    image

左邊就是pid,看到wating狀態的pid 需要執行bypass
2.執行
hbase org.apache.hbase.HBCK2 -d -s bypass -o -r 22887 22889 22888
對會返回true的標志的pid 所對應的 regionname 執行下面命令
3.hbase org.apache.hbase.HBCK2 -d -s unassigns regionname1,regionname2


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM