hbase2.x RIT(region in transition)背景知識(shí)
在hbase1.x中transition是令廣大大數(shù)據(jù)運(yùn)維人員頭疼的一個(gè)話題,因?yàn)?,region 的狀態(tài)轉(zhuǎn)移涉及到了三個(gè)核心組件,分別為:hbase master,zookeeper和hbase 的regionserver,這三個(gè)組件中的某一個(gè)region的狀態(tài)都是一致的情況下,這個(gè)region 才算是正常,狀態(tài)轉(zhuǎn)移過程及其復(fù)雜,hbase 集群很容易出現(xiàn)RIT。
好消息是,hbase2.x中,把zookeeper 中的狀態(tài)取消了,region 的狀態(tài)直接在master 和 regionserver 直接變化。
在hbase2.x 中幾乎所有的集群操作都是通過procedure進(jìn)行的,這也就意味著,產(chǎn)生異常的過程大部分都是在proceduer中,比如region opening 過程卡死或者closing 過程卡死,最終都會(huì)導(dǎo)致region 的狀態(tài)有問題,即產(chǎn)生region in transition。
好消息是,hbase2.x中有個(gè)工具HBCK2,這個(gè)工具可不是簡(jiǎn)單的hbase1.x中hbck 的升級(jí),變化有點(diǎn)大,詳細(xì)變化請(qǐng)參考幫助文檔(https://github.com/apache/hbase-operator-tools/tree/master/hbase-hbck2)。這個(gè)工具的工作實(shí)際就是修復(fù)各種不正常的procedure。(本文已提供工具免費(fèi)下載)
一.RIT?region長(zhǎng)期處于OPEING?
如果RIT中的region長(zhǎng)期處于opening狀態(tài),按以下步驟排查:
1.查看該region對(duì)應(yīng)的regionserver日志,搜索該region名字,看有沒有報(bào)錯(cuò)
1)如果有報(bào)錯(cuò),提示有壞的hfile文件(如下圖),
則把hfile文件mv走,mv?hfile之后一般情況下該region會(huì)自動(dòng)好,如果還是處于RIT,就先bypass掉相關(guān)procedure,然后再unassign,再assign一下
2)如果有報(bào)錯(cuò)The?new max?sequence id 1 is less than the max sequence id
方法1:disable 表,再enable 表
方法2:
對(duì)于從hbase1遷移到hbase2的表,如果表的DATA_BLOCK_ENCODING是PREFIX_TREE,由于PREFIX_TREE在hbase2里已廢棄,所以需要修改
2.如果該region對(duì)應(yīng)的regionserver日志中沒有明顯錯(cuò)誤,就先bypass掉相關(guān)procedure,然后再把region設(shè)置為OFFLINE,再assign一下
如果還是不行,就先bypass掉相關(guān)procedure,然后再把region狀態(tài)設(shè)為OFFLINE,再unassign,再assign
二.RIT?region長(zhǎng)期處于CLOSING
1.先bypass相關(guān)procedure,再把region狀態(tài)設(shè)置為CLOSED,然后再assign
hbase?hbck -j hbase-hbck2-1.0.0.0-SNAPSHOT.jar setRegionState region名字 CLOSED
三.RIT?region長(zhǎng)期處于OFFLINE
把region?assign
四.某個(gè)hbase表已經(jīng)刪除,但是還有這個(gè)表相關(guān)的region處于RIT
處理步驟:
1.bypass 該region相關(guān)的procedure
2.從meta表查看該region的信息
3.deleteall從meta表刪除該region
4.切換hmaster
hbase UI上的RIT應(yīng)該是從meta表里拿的狀態(tài)為OPENING、OFFLINE等中間狀態(tài)的region。從meta表里刪了的,切了hmaster之后就沒有了;狀態(tài)改為CLOSED的region, CLOSED不是中間狀態(tài),是最終狀態(tài)了,所以也就沒有了。
五.hbase2 HBCK Report Region Holes
Hbck report中顯示有holes。Region Holes(Region空洞:Region不連續(xù))
查看該問題可通過master UI界面的HBCK Report查看
解決方法很簡(jiǎn)單,直接使用 hbck2 提供的 fixMeta 操作即可。
在 Usage 說明中能看到 fixMeta 能夠修復(fù) ‘holes’,‘overlaps’ 等 region 問題,但是需要注意必須確保 hbase:meta 是健康的狀態(tài)下進(jìn)行修復(fù)操作!也就是確保表里的所有 region 都是 OPEN 狀態(tài)再進(jìn)行此操作,確保不會(huì)對(duì)集群造成額外的影響。
執(zhí)行命令
hbase hbck -j $HBASE_HOME/lib/hbase-hbck2-1.3.0-SNAPSHOT.jar fixMeta
等待一段時(shí)間,這個(gè)過程可以監(jiān)控 master 日志,如果一切順利問題就解決啦。
六.Hbck report Unkown server處理
base 查詢出現(xiàn)org.apache.hadoop.hbase.NotServingRegionException:
table.region is not online on hregionservername
重啟hmaster,出現(xiàn)region無法自動(dòng)分配,assign region也無法重新分配。
查看hbck report 發(fā)現(xiàn)有unknown servers的問題。
原因:regionserver的name發(fā)生變化。
刪除掉當(dāng)前未知的regionsever,恢復(fù)正常
hbase hbck -j hbase-hbck2-1.3.0-SNAPSHOT.jar scheduleRecoveries unknowservername
?
附
批量腳本
如果有多個(gè)region需要處理可以使用批量腳本
1.批量bypass
從頁(yè)面http://hmaster主機(jī):16010/procedures.jsp拿到procedure?id列表
然后批量bypass
2.批量unassign
從頁(yè)面http://hmaster主機(jī):16010/master.jsp拿到region列表
3.批量assign
4.批量set?offline文章來源:http://www.zghlxwxcb.cn/news/detail-770167.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-770167.html
到了這里,關(guān)于hbase2.x hbck2處理region方案(長(zhǎng)期opening\closing\offline,Report Region Holes,report Unkown server)等的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!