hadoop namenode无法加载fsimage

yk9xbfzb  于 2021-05-27  发布在  Hadoop
关注(0)|答案(0)|浏览(545)

我对启动hdfs有问题。我的集群在google云平台上由3个节点组成。1是活动名称节点。节点2应该是备用namenode和datanode。节点3只是数据节点。
当我启动hdfs时,我的活动namenode启动并运行,但我的备用namenode没有,如果我尝试在node1:50070打开ui,一切看起来都很好,但是如果我尝试node2:50070,它就无法连接(无法访问站点)。在检查datanodes ui时,当我打开node2:50075时,我看到namenode 1处于运行状态,而namenode 2正在连接(它一直是这样,心跳次数永远上升)。
这很有趣,因为我们有另一个测试环境,具有完全相同的hdfs配置,但我们没有问题。下面是错误日志:

2019-03-05 14:45:02,481 ERROR org.apache.hadoop.hdfs.server.namenode.FSImage: Failed to load image from FSImageFile(file=/persist/hdfs/namenode/current/fsimage_0000000000000951913, cpktTxId=0000000000000951913)
java.io.IOException: Premature EOF from inputStream
    at org.apache.hadoop.io.IOUtils.readFully(IOUtils.java:208)
    at org.apache.hadoop.hdfs.server.namenode.FSImageFormat$LoaderDelegator.load(FSImageFormat.java:220)
    at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:931)
    at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:915)
    at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImageFile(FSImage.java:788)
    at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:718)
    at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:316)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFSImage(FSNamesystem.java:1044)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFromDisk(FSNamesystem.java:707)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:635)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:696)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:906)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:885)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1626)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1694)
2019-03-05 14:45:02,534 INFO org.apache.hadoop.hdfs.server.namenode.FSNamesystem: FSNamesystem write lock held for 12202 ms via
java.lang.Thread.getStackTrace(Thread.java:1559)
org.apache.hadoop.util.StringUtils.getStackTrace(StringUtils.java:1033)
org.apache.hadoop.hdfs.server.namenode.FSNamesystemLock.writeUnlock(FSNamesystemLock.java:252)
org.apache.hadoop.hdfs.server.namenode.FSNamesystem.writeUnlock(FSNamesystem.java:1572)
org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFSImage(FSNamesystem.java:1073)
org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFromDisk(FSNamesystem.java:707)
org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:635)
org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:696)
org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:906)
org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:885)
org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1626)
org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1694)
    Number of suppressed write-lock reports: 0
    Longest write-lock held interval: 12202
2019-03-05 14:45:02,535 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:732)
    at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:316)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFSImage(FSNamesystem.java:1044)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFromDisk(FSNamesystem.java:707)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:635)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:696)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:906)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:885)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1626)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1694)
2019-03-05 14:45:02,555 INFO org.mortbay.log: Stopped HttpServer2$SelectChannelConnectorWithSafeStartup@core-acc2:50070
2019-03-05 14:45:02,563 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: Stopping NameNode metrics system...
2019-03-05 14:45:02,564 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: NameNode metrics system stopped.
2019-03-05 14:45:02,565 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: NameNode metrics system shutdown complete.
2019-03-05 14:45:02,565 ERROR org.apache.hadoop.hdfs.server.namenode.NameNode: Failed to start namenode.
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:732)
    at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:316)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFSImage(FSNamesystem.java:1044)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFromDisk(FSNamesystem.java:707)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:635)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:696)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:906)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:885)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1626)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1694)
2019-03-05 14:45:02,568 INFO org.apache.hadoop.util.ExitUtil: Exiting with status 1
2019-03-05 14:45:02,595 INFO org.apache.hadoop.hdfs.server.namenode.NameNode: SHUTDOWN_MSG: 
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at

(复制粘贴时我截断了日志)。
如您所见,错误很明显,namenode2无法加载fsimage。但是,我不确定原因是否只与fsimage本身有关,或者还有更多的原因,因为我看到了一个eof异常和一个我以前从未见过的write lock hold interval消息。
我注意到/尝试了:
我检查了fsimage是否存在,它是否在正确的目录中,是的fsimage在那里。
我注意到与节点1相比,节点2的hdfs/namenode/current目录中的\u-编辑量非常大,但是我没有接触任何文件。
我试图复制node1的日志目录来替换node2中的日志目录,看看一个健康的日志是否有帮助,但没有成功。
我试图运行hdfs namenode-recover,但实际上我得到了相同的日志输出。
我在某个地方读到,这可能是由于超时或java产生的线程数,或诸如此类的东西,你有什么建议吗?
先谢谢你。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题