http://blog.csdn.net/liliwei0213/article/details/53639275新版本的
hbck 能夠修復各類錯誤,修復選項是:
(1)-fix,向下兼容用,被-fixAssignments替代
(2)-fixAssignments,用於修復region assignments錯誤
(3)-fixMeta,用於修復meta表的問題,前提是HDFS上面的region info信息有而且正確。
(4)-fixHdfsHoles,修復region holes(空洞,某個區間沒有region)問題
(5)-fixHdfsOrphans,修復Orphan region(hdfs上面沒有.regioninfo的region)
(6)-fixHdfsOverlaps,修復region overlaps(區間重疊)問題
(7)-fixVersionFile,修復缺失hbase.version文件的問題
(8)-maxMerge <n> (n默認是5),當region有重疊是,須要合併region,一次合併的region數最大不超過這個值。
(9)-sidelineBigOverlaps ,當修復region overlaps問題時,容許跟其餘region重疊次數最多的一些region不參與(修復後,能夠把沒有參與的數據經過bulk load加載到相應的region)
(10)-maxOverlapsToSideline <n> (n默認是2),當修復region overlaps問題時,一組裏最多容許多少個region不參與
因爲選項較多,因此有兩個簡寫的選項
(11) -repair,至關於-fixAssignments -fixMeta -fixHdfsHoles -fixHdfsOrphans -fixHdfsOverlaps -fixVersionFile -sidelineBigOverlaps
(12)-repairHoles,至關於-fixAssignments -fixMeta -fixHdfsHoles -fixHdfsOrphans
新版本的 hbck
(1)缺失hbase.version文件
加上選項 -fixVersionFile 解決
(2)若是一個region即不在META表中,又不在hdfs上面,可是在regionserver的online region集合中
加上選項 -fixAssignments 解決
(3)若是一個region在META表中,而且在regionserver的online region集合中,可是在hdfs上面沒有
加上選項 -fixAssignments -fixMeta 解決,( -fixAssignments告訴regionserver close region),( -fixMeta刪除META表中region的記錄)
(4)若是一個region在META表中沒有記錄,沒有被regionserver服務,可是在hdfs上面有
加上選項 -fixMeta -fixAssignments 解決,( -fixAssignments 用於assign region),( -fixMeta用於在META表中添加region的記錄)
(5)若是一個region在META表中沒有記錄,在hdfs上面有,被regionserver服務了
加上選項 -fixMeta 解決,在META表中添加這個region的記錄,先undeploy region,後assign
(6)若是一個region在META表中有記錄,可是在hdfs上面沒有,而且沒有被regionserver服務
加上選項 -fixMeta 解決,刪除META表中的記錄
(7)若是一個region在META表中有記錄,在hdfs上面也有,table不是disabled的,可是這個region沒有被服務
加上選項 -fixAssignments 解決,assign這個region
(8)若是一個region在META表中有記錄,在hdfs上面也有,table是disabled的,可是這個region被某個regionserver服務了
加上選項 -fixAssignments 解決,undeploy這個region
(9)若是一個region在META表中有記錄,在hdfs上面也有,table不是disabled的,可是這個region被多個regionserver服務了
加上選項 -fixAssignments 解決,通知全部regionserver close region,而後assign region
(10)若是一個region在META表中,在hdfs上面也有,也應該被服務,可是META表中記錄的regionserver和實際所在的regionserver不相符
加上選項 -fixAssignments 解決
(11)region holes
須要加上 -fixHdfsHoles ,建立一個新的空region,填補空洞,可是不assign 這個 region,也不在META表中添加這個region的相關信息
(12)region在hdfs上面沒有.regioninfo文件
-fixHdfsOrphans 解決
(13)region overlaps
須要加上 -fixHdfsOverlaps
說明:
(1)修復region holes時,-fixHdfsHoles 選項只是建立了一個新的空region,填補上了這個區間,還須要加上-fixAssignments -fixMeta 來解決問題,( -fixAssignments 用於assign region),( -fixMeta用於在META表中添加region的記錄),因此有了組合拳 -repairHoles 修復region holes,至關於-fixAssignments -fixMeta -fixHdfsHoles -fixHdfsOrphans
(2) -fixAssignments,用於修復region沒有assign、不該該assign、assign了屢次的問題
(3)-fixMeta,若是hdfs上面沒有,那麼從META表中刪除相應的記錄,若是hdfs上面有,在META表中添加上相應的記錄信息
(4)-repair 打開全部的修復選項,至關於-fixAssignments -fixMeta -fixHdfsHoles -fixHdfsOrphans -fixHdfsOverlaps -fixVersionFile -sidelineBigOverlaps
新版本的hbck從(1)hdfs目錄(2)META(3)RegionServer這三處得到region的Table和Region的相關信息,根據這些信息判斷並repair 服務器
示例:ide
[plain] view plain copy.net
查看hbasemeta狀況
hbase hbck
1.從新修復hbase meta表(根據hdfs上的regioninfo文件,生成meta表)
hbase hbck -fixMeta
2.從新將hbase meta表分給regionserver(根據meta表,將meta表上的region分給regionservere)
hbase hbck -fixAssignments server
[plain] view plain copyblog
當出現漏洞
hbase hbck -fixHdfsHoles (新建一個region文件夾)
hbase hbck -fixMeta (根據regioninfo生成meta表)
hbase hbck -fixAssignments (分配region到regionserver上) io
[plain] view plain copytable
1、故障緣由
IP爲10.191.135.3的服務器在2013年8月1日出現服務器從新啓動的狀況,致使此臺服務器上的全部服務均中止。從而造meta