您好,登錄后才能下訂單哦!
本篇內容主要講解“hadoop hbase集群斷電數據塊被破壞無法啟動怎么解決”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“hadoop hbase集群斷電數據塊被破壞無法啟動怎么解決”吧!
集群機器意外斷電重啟,導致hbase 無法正常啟動,拋出reflect invocation異常,可能是正在執行的插入或合并等操作進行到一半時中斷,導致部分數據文件不完整格式不正確或在hdfs上block塊不完整。
在網上查了一下相關資料,懷疑有可能是關閉前一些未提交的修改所存放的log文件數據寫入一半文件不完整,故把hbase.hlog.split.skip.errors改成true進行嘗試。
關于這個參數作用的解釋:
當服務器奔潰,重啟的時候,會有個回放的過程,把/hbase/WAL/下面記錄的log都回放一遍,合并到每個region中,回放過程中如果有error發生,這個參數又是false,那么exception就會向外層輸出,回放失敗。
但是很遺憾,將此參數修改后hbase集群仍然無法正常啟動。
然后就琢磨其他原因,先觀察hbase啟動時的60010監控頁面,
發現部分region FAILED_OPEN錯誤,its007-meta表一共200個region,只啟動成功199個。
似乎想到了什么,對了,很可能是這個region的數據文件格式不正確,那就先檢查一下其在hdfs上的文件是否正常。
果不其然,觀察hadoop的50070頁面,會提示hadoop文件系統的具體路徑上有兩個數據塊出錯。
(關于hbase在hdfs上的目錄相關文章鏈接:HBase在HDFS上的目錄樹)
解決方法:
1. 運行hadoop fsck / -files檢查hdfs文件
2. 發現/hbase/oldWALs目錄下有一個文件損壞,
運行hadoop fsck / -delete清除損壞的文件
3. 運行hbase hbck -details查看hbase概況,發現Table its007-meta有一個region加載失敗
4. 運行hbase hbck -fixMeta嘗試修復系統元數據表
5. 運行hbase hbck -fix嘗試修復region數據不一致問題。
6. 再次運行hbase hbck -details發現問題仍然未修復,那個region仍然加載失敗。
故直接將該region下出錯的文件移走,暫時移至hdfs根目錄
hadoop fs -move /hbase/data/default/its007-meta/fe6463cba743a87e99f9d8577276bada/meta/9a853fdbe13046fca194051cb9f69f9b /
fe6463cba743a87e99f9d8577276bada是region的名字
9a853fdbe13046fca194051cb9f69f9b是region下出錯的HFile,有800k大小(注:一個region下可以有多HFile)
7. 運行hbase hbck -fix重新加載之前失敗的region,至此完成修復,丟棄了出錯的HFile
到此,相信大家對“hadoop hbase集群斷電數據塊被破壞無法啟動怎么解決”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。