2017-07-28 1 views
0

J'utilise la version hadoop 1.2.1. pour une raison inconnue, mon NameNode descend et après les informations du journal a été obtenuComment récupérer des données après la commande namenode -format dans Hadoop

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) 

Je recherche sur Internet et a constaté que vous devez arrêter cluster et exécutez commande suivante

hadoop namenode -format 

Après cela, quand je redémarrer le cluster, les données n'apparaissaient pas dans les dossiers respectifs dans HDFS. Puis-je récupérer mes données? Comment gérer de telles situations à l'avenir si mon nom de carte tombe en panne?

+0

susceptibles d'intéresser: [outil de sauvegarde et de restauration Hadoop et d'orientation] (https://stackoverflow.com/questions/30234067/hadoop-backup-and-recovery-tool-and-guidance) – spectras

Répondre

0

Vous pouvez toujours sauvegarder vos métadonnées en utilisant ces commandes:

hdfs dfsadmin -safemode enter 
hdfs dfsadmin -saveNamespace 

Ces commandes vont mettre votre NameNode en mode sans échec et pousser les modifications dans le fichier FSImage:

hdfs dfsadmin -fetchImage /path/someFilename 

ou

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

Vous pouvez maintenant placer ces données dans votre répertoire de métadonnées namenode et redémarrer le namenode.

S'il vous plaît noter que vous ne devez pas utiliser la commande ci-dessous jusqu'à ce que, à moins que vous n'avez pas d'autres options:

hadoop namenode -format