2017-07-28 86 views
0

我正在使用hadoop 1.2.1版本。由於一些未知的原因,我的NameNode下降,獲得如何在Hadoop中的namenode -format命令後恢復數據

2017-07-28 15:04:47,422 INFO org.apache.hadoop.hdfs.server.common.Storage: Start loading image file /home/hpcnl/crawler/hadoop-1.2.1/tmp/dfs/name/current/fsimage 
2017-07-28 15:04:47,423 ERROR org.apache.hadoop.hdfs.server.namenode.FSNamesystem: FSNamesystem initialization failed. 
java.io.EOFException 
     at java.io.DataInputStream.readInt(DataInputStream.java:392) 
     at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:881) 
     at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:834) 
     at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:378) 
     at org.apache.hadoop.hdfs.server.namenode.FSDirectory.loadFSImage(FSDirectory.java:104) 
     at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.initialize(FSNamesystem.java:427) 
     at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.<init>(FSNamesystem.java:395) 
     at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:299) 
     at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:569) 
     at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1479) 
     at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1488) 
2017-07-28 15:04:47,428 ERROR org.apache.hadoop.hdfs.server.namenode.NameNode: java.io.EOFException 
     at java.io.DataInputStream.readInt(DataInputStream.java:392) 
     at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:881) 
     at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:834) 
     at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:378) 
     at org.apache.hadoop.hdfs.server.namenode.FSDirectory.loadFSImage(FSDirectory.java:104) 
     at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.initialize(FSNamesystem.java:427) 
     at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.<init>(FSNamesystem.java:395) 
     at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:299) 
     at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:569) 
     at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1479) 
     at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1488) 

日誌信息。然後我搜索互聯網上發現,你應該停止集羣,運行以下命令

hadoop namenode -format 

在此之後,當我重啓羣集,數據未出現在HDFS中的相應文件夾中。我可以恢復我的數據嗎?如果我的namenode出現故障,將來如何處理這些情況?

+0

可能會感興趣:Hadoop的備份和恢復工具和指導(HTTPS:/ /stackoverflow.com/questions/30234067/hadoop-backup-and-recovery-tool-and-guidance) – spectras

回答

0

您可以隨時備份您的元數據,通過使用這些命令:

hdfs dfsadmin -safemode enter 
hdfs dfsadmin -saveNamespace 

這些命令會把你的NameNode在安全模式,推動修改到的FsImage文件:

hdfs dfsadmin -fetchImage /path/someFilename 

cd /namenode/data/current/ 
tar -cvf /root/nn_backup_data.tar 

現在您可以將這些數據放在您的namenode元數據目錄中並重新啓動namenode。

請注意,你不應該使用下面的命令,直到除非你沒有任何其他選擇:

hadoop namenode -format 
相關問題