web-dev-qa-db-fra.com

Namenode ne commence pas

J'utilisais Hadoop en mode pseudo-distribué et tout fonctionnait bien. Mais ensuite, j'ai dû redémarrer mon ordinateur pour une raison quelconque. Et maintenant, lorsque j'essaie de démarrer Namenode et Datanode, je ne peux trouver que Datanode en cours d'exécution. Quelqu'un pourrait-il me dire la raison possible de ce problème? Ou est-ce que je fais quelque chose de mal?

J'ai essayé à la fois bin/start-all.sh et bin/start-dfs.sh.

51
user886908

Je faisais face à la question de namenode ne commence pas. J'ai trouvé une solution en utilisant ce qui suit:

  1. d'abord supprimer tout le contenu du dossier temporaire: rm -Rf <tmp dir> (mon/usr/local/hadoop/tmp)
  2. formatez le namenode: bin/hadoop namenode -format
  3. redémarrez tous les processus: bin/start-all.sh

Vous pouvez également envisager de revenir en arrière en utilisant checkpoint (si vous l'aviez activé).

96
Ketan

hadoop.tmp.dir dans le fichier core-site.xml est defaulted to /tmp/hadoop-${user.name} qui est nettoyé après chaque redémarrage. Remplacez-le par un autre répertoire qui ne sera pas nettoyé au redémarrage.

36
Praveen Sripati

SuivreLES &EACUTE;TAPESa travaillé pour moi avec hadoop 2.2.0 

ÉTAPE 1 stop hadoop

hduser@prayagupd$ /usr/local/hadoop-2.2.0/sbin/stop-dfs.sh

ÉTAPE 2 supprimer le dossier tmp

hduser@prayagupd$ Sudo rm -rf /app/hadoop/tmp/

ÉTAPE 3 create/app/hadoop/tmp /

hduser@prayagupd$ Sudo mkdir -p /app/hadoop/tmp
hduser@prayagupd$ Sudo chown hduser:hadoop /app/hadoop/tmp
hduser@prayagupd$ Sudo chmod 750 /app/hadoop/tmp

ÉTAPE 4 format namenode

hduser@prayagupd$ hdfs namenode -format

ÉTAPE 5 start dfs

hduser@prayagupd$ /usr/local/hadoop-2.2.0/sbin/start-dfs.sh

ETAPE 6 check jps

hduser@prayagupd$ $ jps
11342 Jps
10804 DataNode
11110 SecondaryNameNode
10558 NameNode
25
prayagupd

Dans conf/hdfs-site.xml, vous devriez avoir une propriété comme

<property>
    <name>dfs.name.dir</name>
    <value>/home/user/hadoop/name/data</value>
</property>

La propriété "dfs.name.dir" vous permet de contrôler où Hadoop écrit les métadonnées NameNode. Et si vous lui donnez un autre répertoire plutôt que/tmp, vous vous assurez que les données NameNode ne sont pas supprimées lors du redémarrage.

4
aldrich

Ouvrez un nouveau terminal et démarrez le namenode à l'aide de chemin-de-votre-hadoop-install/bin/hadoop namenode

Le chèque en utilisant jps et namenode devrait être en cours d'exécution

3
tutor

Pourquoi la plupart des réponses ici supposent-elles que toutes les données doivent être supprimées, reformatées, puis redémarrer Hadoop? Comment savons-nous que namenode ne progresse pas, mais prend beaucoup de temps . Il le fera en cas de grande quantité de données dans HDFS . Vérifiez la progression dans les journaux avant de supposer que quoi que ce soit soit bloqué ou bloqué.

$ [kadmin@hadoop-node-0 logs]$ tail hadoop-kadmin-namenode-hadoop-node-0.log

...
016-05-13 18:16:44,405 INFO org.Apache.hadoop.hdfs.server.namenode.FSEditLogLoader: replaying edit log: 117/141 transactions completed. (83%)
2016-05-13 18:16:56,968 INFO org.Apache.hadoop.hdfs.server.namenode.FSEditLogLoader: replaying edit log: 121/141 transactions completed. (86%)
2016-05-13 18:17:06,122 INFO org.Apache.hadoop.hdfs.server.namenode.FSEditLogLoader: replaying edit log: 122/141 transactions completed. (87%)
2016-05-13 18:17:38,321 INFO org.Apache.hadoop.hdfs.server.namenode.FSEditLogLoader: replaying edit log: 123/141 transactions completed. (87%)
2016-05-13 18:17:56,562 INFO org.Apache.hadoop.hdfs.server.namenode.FSEditLogLoader: replaying edit log: 124/141 transactions completed. (88%)
2016-05-13 18:17:57,690 INFO org.Apache.hadoop.hdfs.server.namenode.FSEditLogLoader: replaying edit log: 127/141 transactions completed. (90%)

C’était après presque une heure d’attente sur un système particulier . Il continue de progresser à chaque fois que je le regarde . Soyez patient avec Hadoop lors de la création du système et vérifiez les journaux avant de penser que quelque chose est bloqué ou ne progresse pas .

2
zman58

Si quelqu'un utilise la version hadoop1.2.1 et ne peut pas exécuter namenode, accédez à core-site.xml et remplacez dfs.default.name par fs.default.name

Et formatez ensuite le namenode en utilisant $hadoop namenode -format.

Enfin, lancez le fichier hdfs en utilisant start-dfs.sh et vérifiez le service en utilisant jps.

1
Nagarjuna

Dans core-site.xml: 

    <configuration>
       <property>
          <name>fs.defaultFS</name>
          <value>hdfs://localhost:9000</value>
       </property>
       <property>
          <name>hadoop.tmp.dir</name>
          <value>/home/yourusername/hadoop/tmp/hadoop-${user.name}
         </value>
  </property>
</configuration>

et format de namenode avec:

hdfs namenode -format

a travaillé pour hadoop 2.8.1

I got the solution just share with you that will work who got the errors:

1. First check the /home/hadoop/etc/hadoop path, hdfs-site.xml and

 check the path of namenode and datanode 

<property>
  <name>dfs.name.dir</name>
    <value>file:///home/hadoop/hadoopdata/hdfs/namenode</value>
</property>

<property>
  <name>dfs.data.dir</name>
    <value>file:///home/hadoop/hadoopdata/hdfs/datanode</value>
</property>

2.Check the permission,group and user of namenode and datanode of the particular path(/home/hadoop/hadoopdata/hdfs/datanode), and check if there are any problems in all of them and if there are any mismatch then correct it. ex .chown -R hadoop:hadoop in_use.lock, change user and group

chmod -R 755 <file_name> for change the permission
0
Shyam Gupta

Ajoutez la propriété hadoop.tmp.dir dans core-site.xml

<configuration>
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://localhost:9000</value>
  </property>
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/home/yourname/hadoop/tmp/hadoop-${user.name}</value>
  </property>
</configuration>

et format hdfs (hadoop 2.7.1):

$ hdfs namenode -format

La valeur par défaut de core-default.xml est /tmp/hadoop-${user.name}, qui sera supprimée après le redémarrage.

0
linbojin

Avez-vous changé conf/hdfs-site.xmldfs.name.dir?

Formatez namenode après l'avoir changé.

$ bin/hadoop namenode -format
$ bin/hadoop start-all.sh
0
Chenxu Wang

J'ai exécuté $hadoop namenode pour démarrer namenode manuellement au premier plan.

D'après les journaux, j'ai découvert que 50070 était occupé, qui était utilisé par défaut par dfs.namenode.http-address. Après avoir configuré dfs.namenode.http-address dans hdfs-site.xml, tout s’est bien passé.

0
Juiceyang

Au lieu de formater namenode, vous pouvez utiliser la commande ci-dessous pour redémarrer le namenode. Cela a fonctionné pour moi:

Service Sudo redémarrage de hadoop-master

  1. hadoop dfsadmin -safemode quitter
0
Raghu

Face au même problème.

(1) Vérifiez toujours les fautes de frappe dans la configuration des fichiers .xml, en particulier les balises XML.

(2) allez dans bin dir. et tapez ./start-all.sh

(3) puis tapez jps, pour vérifier si les processus fonctionnent

0
Amit-dat

Pour moi, ce qui suit a fonctionné après avoir changé le répertoire du namenode Et du datanode dans hdfs-site.xml

- avant d'exécuter les étapes suivantes, arrêtez tous les services avec stop-all.sh ou dans mon cas, j'ai utilisé le stop-dfs.sh pour arrêter le dfs

  1. Sur le nouveau répertoire configuré, pour chaque nœud (namenode et datanode), supprimez tous les dossiers/fichiers qu'il contient (dans mon cas, un répertoire "en cours").
  2. supprimez le répertoire temporaire Hadoop: $rm -rf /tmp/haddop-$USER 
  3. formater le Namenode: hadoop/bin/hdfs namenode -format
  4. start-dfs.sh

Après avoir suivi ces étapes, mon nom-code et mes codes de données étaient vivants à l'aide du nouveau répertoire configuré.

0
airin

Si vous conserviez les configurations par défaut lors de l'exécution de hadoop, le port pour le nom de code serait 50070. Vous devrez rechercher tous les processus en cours d'exécution sur ce port et les tuer d'abord.

  • Arrêtez tous les hadoop en cours avec: bin/stop-all.sh

    vérifie tous les processus en cours d'exécution sur le port 50070

  • Sudo netstat -tulpn | grep :50070 #check tous les processus en cours d'exécution dans port 50070, s'il y en a un/apparaîtront/apparaîtra sur le RHS de la sortie.

  • Sudo kill -9 <process_id> #kill_the_process.

  • Sudo rm -r /app/hadoop/tmp #delete le dossier temporaire

  • Sudo mkdir /app/hadoop/tmp # le recréer

  • Sudo chmod 777 –R /app/hadoop/tmp (777 est donné pour cet exemple seulement)

  • bin/hadoop namenode –format #format hadoop namenode

  • bin/start-all.sh # services hadoop all-start

Référez-vous ce blog

0
user1675314

Si vous rencontrez ce problème après le redémarrage du système, les étapes ci-dessous fonctionneront correctement. 

Pour contourner le problème.

1) formatez le namenode: bin/hadoop namenode -format

2) redémarrez tous les processus: bin/start-all.sh

Pour le correctif de Perm: -

1) Allez dans /conf/core-site.xml changez fs.default.name en votre nom personnalisé.

2) formatez le namenode: bin/hadoop namenode -format

3) redémarrez tous les processus: bin/start-all.sh

0
prashant thakre

J'ai rencontré la même chose après un redémarrage.

pour hadoop-2.7.3, tout ce que je devais faire était de formater le namenode:

<HadoopRootDir>/bin/hdfs namenode -format

Puis une commande jps montre

6097 DataNode
755 RemoteMavenServer
5925 NameNode
6293 SecondaryNameNode
6361 Jps
0
soheildb

Si votre namenode est bloqué en mode sans échec, vous pouvez passer à namenode, su hdfs user et exécuter la commande suivante pour désactiver le mode sans échec: 

hdfs dfsadmin -fs hdfs://server.com:8020 -safemode leave
0
Christian Weaves

Après la suppression du dossier de données d'un gestionnaire de ressources, le problème a disparu.
Même si vous avez un formatage ne peut pas résoudre ce problème.

0
HbnKing

Essaye ça,

1) Arrêtez tous les processus hadoop: stop-all.sh

2) Supprimer le dossier tmp manuellement

3) Format de nom: hadoop namenode -format

4) Démarrer tous les processus: start-all.sh

0
Rengasamy