第二次尝试修复Hbase2出现Region不一致,使用 HBCK2 - 2021.11.15
生活随笔
收集整理的這篇文章主要介紹了
第二次尝试修复Hbase2出现Region不一致,使用 HBCK2 - 2021.11.15
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
spark任務(wù)中入hbase任務(wù)全部失敗了,查看日志發(fā)現(xiàn)hbase出現(xiàn)問題
報(bào)錯(cuò)日志:
Call queue is full on xxxx,16000,1611197476326, too many items queued
修改了配置文件,增加了隊(duì)列數(shù)量
參數(shù)說明:https://hijiazz.gitee.io/hbase-callqueue-isfull/
2. 并且zookeeper好像掛掉了,后來重啟zk。
然后重啟hbase后出現(xiàn)了region不一致的情況。
嘗試進(jìn)行修復(fù)
- ?前提:HDFS fsck 確保 hbase跟目錄下文件沒有損壞丟失,如果有,則先進(jìn)行壞block 移除。
- ?步驟1. 看webUI中l(wèi)ock頁面是否有鎖住的producer
先嘗試bypass -or +pid ,將父producer解鎖,再bypass -o將子producer解鎖 - ?步驟2. 看webui中是否出現(xiàn)RIT卡在了OPENNING/CLOSING狀態(tài)的region,使用assigns -o 進(jìn)行重分配,生成新的producer
- ?步驟3. 再次查看lock中是否出現(xiàn)新的,重復(fù)步驟1和2,直到RIT消失或lock中不再出現(xiàn)新的。
- ?步驟4. 使用hbase hbck --details [表名] 來查看表狀態(tài)
- ?步驟5. 如果日志中出現(xiàn)status=inconsistencies證明還存在region不一致,搜索ERROR(在vim命令模式輸入/ERROR來搜索)查看信息,每個(gè)ERROR都有錯(cuò)誤說明,根據(jù)說明進(jìn)行修復(fù)。
- ?步驟6. 可能出現(xiàn)幾種情況:
1. hdfs上region不存在但是元數(shù)據(jù)存在:對(duì)regionID進(jìn)行assigns或extraRegionsInMeta --fix進(jìn)行修復(fù)
2. hdfs上region存在但是元數(shù)據(jù)不存在,嘗試重建元數(shù)據(jù) addFsRegionsMissingInMeta
3. not deployed on any region server,嘗試assign此region
4. region元數(shù)據(jù)在dn1但實(shí)際是在dn2上啟動(dòng)的,嘗試unassign在assigns
實(shí)際上面的解決辦法都不一定能解決,實(shí)際如何解決的有待商榷。
根據(jù)hbck2 -help 來查看幫助文檔,看看其中的命令在什么情況下使用,然后就操作就行了。
最終解決的辦法是hbase hbck后還存在5個(gè)region不一致,后來將他們?cè)趆dfs上刪除了(會(huì)丟失數(shù)據(jù)),然后重新assign這些region,(這里可能會(huì)存在一定時(shí)間的延遲,多執(zhí)行幾次hbase hbck和assigns命令)最終hbase hbck后status=ok了,不一致的region特別多或者數(shù)據(jù)不可以刪除能修復(fù)盡量去修復(fù),總共修復(fù)了15/6個(gè)小時(shí),還是在第二天將最后幾個(gè)無法處理掉的region刪除后集群才恢復(fù)正常的,本來是存在56個(gè)不一致的region的。 - ?步驟7. 如果出現(xiàn)數(shù)據(jù)空洞,There is a hole in the region chain between. You need to create a new .regioninfo and region dir in hdfs to plug the hole
三個(gè)解決辦法
1. 使用fixMeta命令來重建空洞和修復(fù)region重疊,(使用后沒效果)
2. 刪除HDFS對(duì)應(yīng)region下recovered.edits,然后執(zhí)行assigns之類操作,注意會(huì)丟失部分?jǐn)?shù)據(jù),(我使用的這個(gè),只出現(xiàn)了一兩個(gè)region數(shù)據(jù)空洞,并且數(shù)據(jù)丟一點(diǎn)可以接受),網(wǎng)上博客說的刪除所有表的盡量不要去操作,我這里只是刪除了出現(xiàn)數(shù)據(jù)空洞的region下的recovered.edits
3. 增加配置后重啟集群:提高regionserver的線程數(shù)量,以此來提高rs處理region的能力(沒測(cè)試)
- ?步驟8. 盡量閱讀hbck2的help文檔,理解一下里面命令的使用準(zhǔn)則,在根據(jù)hbase hbck中的ERROR信息對(duì)應(yīng)進(jìn)行修復(fù),里面的命令在解決的過程中基本都嘗試過了,但是對(duì)其理解的還是不透,后續(xù)還要在研究一下,如果實(shí)在是盡力了也無法修復(fù),那就刪除它吧,目前只能修復(fù)到這種地步了,經(jīng)過16個(gè)小時(shí)的嘗試最后剩余了5個(gè)region只能刪除了,然后問題就解決掉了,HBCK2修復(fù)元數(shù)據(jù)網(wǎng)上的資料實(shí)在是太少了,只能摸著石頭過河,不斷成長。
參考/引用博客:
官網(wǎng)文檔:https://github.com/apache/hbase-operator-tools/tree/master/hbase-hbck2
隊(duì)列參數(shù)修改:https://hijiazz.gitee.io/hbase-callqueue-isfull/
hbck2使用:https://www.modb.pro/db/54575
Hbase修復(fù)博客:https://cloud.tencent.com/developer/article/1359221 它里面的連接也可以一并看下
總結(jié)
以上是生活随笔為你收集整理的第二次尝试修复Hbase2出现Region不一致,使用 HBCK2 - 2021.11.15的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java第二章_零基础学Java第二章
- 下一篇: 走出大凉山的“寒门”学子 陈时鑫刷屏全奖