启动hadoop报ERROR org.apache.hadoop.hdfs.server.namenode.FSImage: Failed to load image from FSImageFile

本文记录了一次Hadoop集群中namenode(standby)无法启动的问题及解决过程。故障表现为加载FSImage文件失败,通过复制namenode(active)的元数据文件到standby节点解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    问题:重启所有服务器后,在启动hadoop集群时发现namenode(standby)始终启动不了,查看日志发现报错:ERROR org.apache.hadoop.hdfs.server.namenode.FSImage: Failed to load image from FSImageFile,详细报错信息如下:

2016-04-29 18:01:03,770 WARN org.apache.hadoop.security.ssl.FileBasedKeyStoresFactory: The property 'ssl.client.truststore.location' has not been set, no TrustStore will be loaded
2016-04-29 18:01:04,582 ERROR org.apache.hadoop.hdfs.server.namenode.FSImage: Failed to load image from FSImageFile(file=/opt/hadoop/dfs/name/current/fsimage_0000000000000001344, cpktTxId=0000000000000001344)
java.io.IOException: Premature EOF from inputStream
	at org.apache.hadoop.io.IOUtils.readFully(IOUtils.java:194)
	at org.apache.hadoop.hdfs.server.namenode.FSImageFormat$LoaderDelegator.load(FSImageFormat.java:221)
	at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:913)
	at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:899)
	at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImageFile(FSImage.java:722)
	at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:660)
	at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:279)
	at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFSImage(FSNamesystem.java:955)
	at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFromDisk(FSNamesystem.java:700)
	at org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:529)
	at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:585)
	at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:751)
	at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:735)
	at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1407)
	at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1473)
2016-04-29 18:01:04,596 WARN org.apache.hadoop.hdfs.server.namenode.FSNamesystem: Encountered exception loading fsimage
java.io.IOException: Failed to load an FSImage file!
	at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:671)
	at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:279)
	at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFSImage(FSNamesystem.java:955)
	at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFromDisk(FSNamesystem.java:700)
	at org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:529)
	at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:585)
	at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:751)
	at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:735)
	at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1407)
	at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1473)
2016-04-29 18:01:04,602 INFO org.mortbay.log: Stopped HttpServer2$SelectChannelConnectorWithSafeStartup@lida2:50070
2016-04-29 18:01:04,607 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: Stopping NameNode metrics system...
2016-04-29 18:01:04,607 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: NameNode metrics system stopped.
2016-04-29 18:01:04,608 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: NameNode metrics system shutdown complete.
2016-04-29 18:01:04,608 FATAL org.apache.hadoop.hdfs.server.namenode.NameNode: Exception in namenode join
java.io.IOException: Failed to load an FSImage file!
	at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:671)
	at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:279)
	at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFSImage(FSNamesystem.java:955)
	at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFromDisk(FSNamesystem.java:700)
	at org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:529)
	at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:585)
	at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:751)
	at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:735)
	at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1407)
	at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1473)
2016-04-29 18:01:04,609 INFO org.apache.hadoop.util.ExitUtil: Exiting with status 1
2016-04-29 18:01:04,614 INFO org.apache.hadoop.hdfs.server.namenode.NameNode: SHUTDOWN_MSG: 
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at lida2/10.30.12.170
************************************************************/
  原因:namenode(standby)load FSImage file失败!

    解决办法:

    1、手动copy namenode(active)所在的那台服务器上XXX/dfs/name/current/下的所有文件到namenode(standby)所在的那台服务器的对应文件夹下。(这个方法是我的解决办法)

    2、重新格式化namenode(active),然后再把格式化后的元数据复制到namenode(standby)。(这个方法是别人提供的,我感觉这样不妥!因为,重新格式化namenode,namenode上的元数据会丢失,元数据丢失了,后果不堪设想!所以此方法风险太大,请谨慎使用!!)

    3、有人说“有个命令执行一下就好了,这个命令的意思就是把所有元数据过滤一次,把好的留下,坏的剔除。后果就是会丢失一小部分坏的元数据。”不知是什么命令,搜也搜不到,有知道的,烦请告诉小弟一下!


2025-03-22 21:22:25,122 WARN namenode.NameNode: Encountered exception during format java.io.IOException: Cannot create directory /opt/hadoop/tmp/dfs/name/current at org.apache.hadoop.hdfs.server.common.Storage$StorageDirectory.clearDirectory(Storage.java:447) at org.apache.hadoop.hdfs.server.namenode.NNStorage.format(NNStorage.java:591) at org.apache.hadoop.hdfs.server.namenode.NNStorage.format(NNStorage.java:613) at org.apache.hadoop.hdfs.server.namenode.FSImage.format(FSImage.java:189) at org.apache.hadoop.hdfs.server.namenode.NameNode.format(NameNode.java:1285) at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1733) at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1841) 2025-03-22 21:22:25,166 INFO namenode.FSNamesystem: Stopping services started for active state 2025-03-22 21:22:25,167 INFO namenode.FSNamesystem: Stopping services started for standby state 2025-03-22 21:22:25,169 ERROR namenode.NameNode: Failed to start namenode. java.io.IOException: Cannot create directory /opt/hadoop/tmp/dfs/name/current at org.apache.hadoop.hdfs.server.common.Storage$StorageDirectory.clearDirectory(Storage.java:447) at org.apache.hadoop.hdfs.server.namenode.NNStorage.format(NNStorage.java:591) at org.apache.hadoop.hdfs.server.namenode.NNStorage.format(NNStorage.java:613) at org.apache.hadoop.hdfs.server.namenode.FSImage.format(FSImage.java:189) at org.apache.hadoop.hdfs.server.namenode.NameNode.format(NameNode.java:1285) at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1733) at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1841) 2025-03-22 21:22:25,179 INFO util.ExitUtil: Exiting with status 1: java.io.IOException: Cannot create directory /opt/hadoop/tmp/dfs/name/current 2025-03-22 21:22:25,207 INFO namenode.NameNode: SHUTDOWN_MSG:
03-23
2025-07-16 11:05:59,849 INFO org.eclipse.jetty.server.AbstractConnector: Stopped ServerConnector@51bf5add{HTTP/1.1, (http/1.1)}{0.0.0.0:9870} 2025-07-16 11:05:59,849 INFO org.eclipse.jetty.server.session: node0 Stopped scavenging 2025-07-16 11:05:59,850 INFO org.eclipse.jetty.server.handler.ContextHandler: Stopped o.e.j.s.ServletContextHandler@49b2a47d{static,/static,file:///home/daryl/hadoop-3.3.6/share/hadoop/hdfs/webapps/static/,STOPPED} 2025-07-16 11:05:59,850 INFO org.eclipse.jetty.server.handler.ContextHandler: Stopped o.e.j.s.ServletContextHandler@7dc3712{logs,/logs,file:///home/daryl/hadoop-3.3.6/logs/,STOPPED} 2025-07-16 11:05:59,857 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: Stopping NameNode metrics system... 2025-07-16 11:05:59,858 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: NameNode metrics system stopped. 2025-07-16 11:05:59,858 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: NameNode metrics system shutdown complete. 2025-07-16 11:05:59,858 ERROR org.apache.hadoop.hdfs.server.namenode.NameNode: Failed to start namenode. org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: Directory /home/daryl/hadoop-3.3.6/data/name is in an inconsistent state: storage directory does not exist or is not accessible. at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverStorageDirs(FSImage.java:392) at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:243) at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFSImage(FSNamesystem.java:1236) at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFromDisk(FSNamesystem.java:808) at org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:694) at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:781) at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:1033) at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:1008) at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1782) at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1847) 2025-07-16 11:05:59,861 INFO org.apache.hadoop.util.ExitUtil: Exiting with status 1: org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: Directory /home/daryl/hadoop-3.3.6/data/name is in an inconsistent state: storage directory does not exist or is not accessible. 2025-07-16 11:05:59,866 INFO org.apache.hadoop.hdfs.server.namenode.NameNode: SHUTDOWN_MSG: /************************************************************ SHUTDOWN_MSG: Shutting down NameNode at zx/127.0.1.1 ************************************************************/
07-17
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值