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

来源:互联网 发布:天融信数据库审计系统 编辑:程序博客网 时间:2024/05/12 02:10

    问题:重启所有服务器后,在启动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 loaded2016-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 inputStreamat 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 fsimagejava.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:500702016-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 joinjava.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 12016-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、有人说“有个命令执行一下就好了,这个命令的意思就是把所有元数据过滤一次,把好的留下,坏的剔除。后果就是会丢失一小部分坏的元数据。”不知是什么命令,搜也搜不到,有知道的,烦请告诉小弟一下!


0 1
原创粉丝点击