91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

开江县| 奉化市| 新宁县| 嘉善县| 淮滨县| 台东市| 梨树县| 营口市| 东乡族自治县| 横山县| 广水市| 义乌市| 东光县| 防城港市| 凌海市| 承德县| 桑植县| 铁力市| 衡山县| 朝阳区| 商都县| 陕西省| 抚松县| 石门县| 澄迈县| 万荣县| 鄱阳县| 汝城县| 扬中市| 龙海市| 铁岭市| 如皋市| 阜城县| 朝阳区| 安康市| 唐河县| 大悟县| 海门市| 怀仁县| 定日县| 嵊州市|