解決HDFS無法啟動namenode,報錯Premature EOF from inputStream;Failed to load FSImage file, see error(s) above for more info


一.情況描述

啟動hadoop后發現無法打開hdfs web界面,50070打不開,於是jps發現少了一個namenode:

 查看日志信息,發現如下報錯:

2022-01-03 23:54:10,993 INFO org.apache.hadoop.hdfs.server.namenode.FSImage: Planning to load image: FSImageFile(file=/export/servers/hadoop-3.1.4/hadoopDatas/namenodeDatas/current/fsimage_0000000000000052563, cpktTxId=0000000000000052563)
2022-01-03 23:54:10,999 ERROR org.apache.hadoop.hdfs.server.namenode.FSImage: Failed to load image from FSImageFile(file=/export/servers/hadoop-3.1.4/hadoopDatas/namenodeDatas/current/fsimage_0000000000000052563, cpktTxId=0000000000000052563)
java.io.IOException: Premature EOF from inputStream
    at org.apache.hadoop.io.IOUtils.readFully(IOUtils.java:212)
    at org.apache.hadoop.hdfs.server.namenode.FSImageFormat$LoaderDelegator.load(FSImageFormat.java:222)
    at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:962)
    at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:946)
    at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImageFile(FSImage.java:807)
    at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:738)
    at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:336)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFSImage(FSNamesystem.java:1132)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFromDisk(FSNamesystem.java:747)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:652)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:723)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:966)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:939)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1705)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1772)
2022-01-03 23:54:11,015 INFO org.apache.hadoop.hdfs.server.namenode.FSImage: Planning to load image: FSImageFile(file=/export/servers/hadoop-3.1.4/hadoopDatas/namenodeDatas2/current/fsimage_0000000000000052563, cpktTxId=0000000000000052563)
2022-01-03 23:54:11,015 ERROR org.apache.hadoop.hdfs.server.namenode.FSImage: Failed to load image from FSImageFile(file=/export/servers/hadoop-3.1.4/hadoopDatas/namenodeDatas2/current/fsimage_0000000000000052563, cpktTxId=0000000000000052563)
java.io.IOException: Premature EOF from inputStream
    at org.apache.hadoop.io.IOUtils.readFully(IOUtils.java:212)
    at org.apache.hadoop.hdfs.server.namenode.FSImageFormat$LoaderDelegator.load(FSImageFormat.java:222)
    at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:962)
    at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:946)
    at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImageFile(FSImage.java:807)
    at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:738)
    at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:336)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFSImage(FSNamesystem.java:1132)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFromDisk(FSNamesystem.java:747)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:652)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:723)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:966)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:939)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1705)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1772)
2022-01-03 23:54:11,021 WARN org.apache.hadoop.hdfs.server.namenode.FSNamesystem: Encountered exception loading fsimage
java.io.IOException: Failed to load FSImage file, see error(s) above for more info.
    at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:752)
    at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:336)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFSImage(FSNamesystem.java:1132)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFromDisk(FSNamesystem.java:747)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:652)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:723)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:966)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:939)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1705)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1772)

二.解決方案

根據報錯信息,發現是讀取文件錯誤,后面即是文件路徑名稱,我這里是讀取兩個文件出錯,然后刪除日志中讀取錯誤的文件(可以提前備份)

我這里已經刪除了(.md5可以不刪),之后重啟hdfs,可以發現namenode已啟動

 重新進入hdfs頁面

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM