亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

hadoop中edits文件損壞如何修復

發布時間:2021-12-09 15:34:46 來源:億速云 閱讀:362 作者:小新 欄目:云計算

這篇文章將為大家詳細講解有關hadoop中edits文件損壞如何修復,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

      前段時間公司hadoop集群宕機,發現是namenode 磁盤滿了。。清理出部分空間后,重啟集群時,重啟失敗。

又發現集群Secondary namenode 服務也恰恰壞掉,導致所有的操作log持續寫入edits.new 文件,等集群宕機的時候文件大小已經達到了喪心病狂的70G+..重啟集群報錯 加載edits文件失敗。分析加載文件報錯原因是磁盤不足導致最后寫入的log只寫入一半就宕機了。由于log不完整,hadoop再次啟動加載edits文件時讀取文件報錯。由于edits.new 文件過大,存儲了好多操作log,所以必須要對其進行修復。

        嘗試刪除文件的最后幾行,結果還是報錯。于是查看源碼對edits 文件結構進行分析發現是二進制格式,首行為版本號,然后是hadoop運行過程中的log記錄內容,由操作碼 +長度(非必須)+其他項組成。

edits文件格式分析圖

hadoop中edits文件損壞如何修復

解決辦法

報錯位置在源碼中的方法為org.apache.hadoop.hdfs.server.namenode.FSEditLog.loadFSEdits(EditLogInputStream edits)方法中讀取文件最后位置時因為缺少部分數據報錯, 所以把這部分代碼單獨拿出來,去掉業務操作部分,只留讀取過程,記錄異常之前的文件長度len,然后將0到len 這部分的內容復制出來成新的edits文件。啟動hadoop集群,成功!

NameNode啟動加載元數據情景分析

  • NameNode函數里調用FSNamesystemm讀取dfs.namenode.name.dir和dfs.namenode.edits.dir構建FSDirectory。

  • FSImage類recoverTransitionRead和saveNameSpace分別實現了元數據的檢查、加載、內存合并和元數據的持久化存儲。

  • saveNameSpace將元數據寫入到磁盤,具體操作步驟:首先將current目錄重命名為lastcheckpoint.tmp;然后在創建新的current目錄,并保存文件;最后將lastcheckpoint.tmp重命名為privios.checkpoint.

  • checkPoint的過程:Secondary NameNode會通知nameNode產生一個edit log文件edits.new,之后所有的日志操作寫入到edits.new文件中。接下來Secondary NameNode會從namenode下載fsimage和edits文件,進行合并產生新的fsimage.ckpt;然后Secondary會將fsimage.ckpt文件上傳到namenode。最后namenode會重命名fsimage.ckpt為fsimage,edtis.new為edits;

    PS:

最新的CDH版本的hadoop 集群啟動可以對edits文件進行recover操作,跳過報錯log

關于“hadoop中edits文件損壞如何修復”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

玉环县| 定兴县| 石阡县| 铁力市| 白河县| 铜梁县| 上饶市| 健康| 开阳县| 大洼县| 长治市| 南雄市| 玉树县| 蒙阴县| 湛江市| 沂南县| 泽库县| 宁强县| 黄骅市| 邵阳县| 家居| 克山县| 灵宝市| 沁水县| 崇信县| 临泽县| 石台县| 马龙县| 吉隆县| 鄱阳县| 阿克陶县| 苍梧县| 萨嘎县| 无极县| 尼勒克县| 洛阳市| 漳浦县| 长丰县| 万年县| 康马县| 车致|