web-dev-qa-db-fra.com

Le processus Datanode ne fonctionne pas dans Hadoop

J'ai configuré et configuré un cluster Hadoop multi-nœuds à l'aide de ce tutoriel .

Lorsque je tape la commande start-all.sh, tous les processus s’initialisent correctement comme suit:

starting namenode, logging to /usr/local/hadoop/libexec/../logs/hadoop-root-namenode-jawwadtest1.out
jawwadtest1: starting datanode, logging to /usr/local/hadoop/libexec/../logs/hadoop-root-datanode-jawwadtest1.out
jawwadtest2: starting datanode, logging to /usr/local/hadoop/libexec/../logs/hadoop-root-datanode-jawwadtest2.out
jawwadtest1: starting secondarynamenode, logging to /usr/local/hadoop/libexec/../logs/hadoop-root-secondarynamenode-jawwadtest1.out
starting jobtracker, logging to /usr/local/hadoop/libexec/../logs/hadoop-root-jobtracker-jawwadtest1.out
jawwadtest1: starting tasktracker, logging to /usr/local/hadoop/libexec/../logs/hadoop-root-tasktracker-jawwadtest1.out
jawwadtest2: starting tasktracker, logging to /usr/local/hadoop/libexec/../logs/hadoop-root-tasktracker-jawwadtest2.out

Cependant, lorsque je tape la commande jps, j'obtiens le résultat suivant:

31057 NameNode
4001 RunJar
6182 RunJar
31328 SecondaryNameNode
31411 JobTracker
32119 Jps
31560 TaskTracker

Comme vous pouvez le constater, aucun processus datanode n’est en cours d’exécution. J'ai essayé de configurer un cluster à un seul nœud, mais j'ai eu le même problème. Quelqu'un aurait-il une idée de ce qui pourrait mal se passer ici? Existe-t-il des fichiers de configuration qui ne sont pas mentionnés dans le didacticiel ou que j'ai consultés? Je suis nouveau chez Hadoop et je suis un peu perdu. Toute aide serait grandement appréciée.

EDIT: Hadoop-root-datanode-jawwadtest1.log:

STARTUP_MSG:   args = []
STARTUP_MSG:   version = 1.0.3
STARTUP_MSG:   build = https://svn.Apache.org/repos/asf/hadoop/common/branches/$
************************************************************/
2012-08-09 23:07:30,717 INFO org.Apache.hadoop.metrics2.impl.MetricsConfig: loa$
2012-08-09 23:07:30,734 INFO org.Apache.hadoop.metrics2.impl.MetricsSourceAdapt$
2012-08-09 23:07:30,735 INFO org.Apache.hadoop.metrics2.impl.MetricsSystemImpl:$
2012-08-09 23:07:30,736 INFO org.Apache.hadoop.metrics2.impl.MetricsSystemImpl:$
2012-08-09 23:07:31,018 INFO org.Apache.hadoop.metrics2.impl.MetricsSourceAdapt$
2012-08-09 23:07:31,024 WARN org.Apache.hadoop.metrics2.impl.MetricsSystemImpl:$
2012-08-09 23:07:32,366 INFO org.Apache.hadoop.ipc.Client: Retrying connect to $
2012-08-09 23:07:37,949 ERROR org.Apache.hadoop.hdfs.server.datanode.DataNode: $
        at org.Apache.hadoop.hdfs.server.datanode.DataStorage.doTransition(Data$
        at org.Apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransition$
        at org.Apache.hadoop.hdfs.server.datanode.DataNode.startDataNode(DataNo$
        at org.Apache.hadoop.hdfs.server.datanode.DataNode.<init>(DataNode.Java$
        at org.Apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNod$
        at org.Apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode($
        at org.Apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataN$
        at org.Apache.hadoop.hdfs.server.datanode.DataNode.secureMain(DataNode.$
        at org.Apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.Java:1$

2012-08-09 23:07:37,951 INFO org.Apache.hadoop.hdfs.server.datanode.DataNode: S$
/************************************************************
SHUTDOWN_MSG: Shutting down DataNode at jawwadtest1/198.101.220.90
************************************************************/
33
Jawwad Zakaria

Vous devez faire quelque chose comme ça:

  • bin/stop-all.sh (ou stop-dfs.sh et stop-yarn.sh dans la série 2.x)
  • rm -Rf /app/tmp/hadoop-your-username/*
  • bin/hadoop namenode -format (ou hdfs dans la série 2.x)

la solution a été empruntée à: http://pages.cs.brandeis.edu/~cs147a/lab/hadoop-troubleshooting/ . Fondamentalement, cela consiste à redémarrer à partir de zéro, alors assurez-vous de ne pas perdre de données en formatant le hdfs.

63
giltsl

J'ai rencontré le même problème. J'ai créé un dossier hdfs '/ home/username/hdfs' avec les sous-répertoires name, data et tmp qui ont été référencés dans les fichiers xml de config de hadoop/conf. 

Quand j'ai commencé hadoop et jps, je ne pouvais pas trouver datanode. J'ai donc essayé de démarrer manuellement datanode à l'aide de bin/hadoop datanode . Ensuite, j’ai compris à partir du message d’erreur qu’il avait des problèmes d’autorisation pour accéder à dfs.data.dir =/home/nom_utilisateur/hdfs/data /, qui était référencé dans l’un des fichiers de configuration hadoop. Tout ce que je devais faire était d'arrêter hadoop, supprimer le contenu du répertoire/home/nom d'utilisateur/hdfs/tmp/* puis essayer cette commande - chmod -R 755 /home/username/hdfs/ puis démarrer hadoop. Je pourrais trouver le datanode!

15
sunskin

Je rencontrais le même problème lors de l’exécution d’une instance pseudo-distribuée à nœud unique. Impossible de comprendre comment le résoudre, mais une solution rapide consiste à démarrer manuellement un DataNode avec
hadoop-x.x.x/bin/hadoop datanode

6
HypnoticSheep

J'ai rencontré un problème similaire lors de l'exécution du code de données. Les étapes suivantes ont été utiles.

  1. Dans le répertoire [hadoop_directory]/sbin, utilisez ./stop-all.sh pour arrêter tous les services en cours d'exécution.
  2. Supprimez le répertoire tmp à l'aide de rm -r [répertoire_droop]/tmp (chemin d'accès configuré dans [répertoire_droop] /etc/hadoop/core-site.xml)
  3. Sudo mkdir [répertoire_droop]/tmp (crée un nouveau répertoire tmp)
  4. Accédez au répertoire */hadoop_store/hdfs où vous avez créé le namenode et le datanode en tant que sous-répertoires. (Les chemins configurés dans [hadoop_directory] /etc/hadoop/hdfs-site.xml). Utilisation 

    rm -r namenode
    
    rm -r datanode
    
  5. Dans le répertoire */hadoop_store/hdfs, utilisez

    Sudo mkdir namenode
    
    Sudo mkdir datanode
    

En cas de problème de permission, utilisez

   chmod -R 755 namenode 

   chmod -R 755 datanode
  1. Dans [hadoop_directory]/bin, utilisez 

     hadoop namenode -format (To format your namenode)
    
  2. Dans le répertoire [hadoop_directory]/sbin, utilisez ./start-all.sh ou ./start-dfs.sh pour démarrer les services.
  3. Utilisez jps pour vérifier le fonctionnement des services.
5
Anirban

Exécuter les commandes ci-dessous en ligne: -

  1. stop-all.sh (Exécuter Stop All pour arrêter tout le processus hadoop)
  2. rm -r/usr/local/hadoop/tmp/(votre répertoire tado Hadoop que vous avez configuré dans hadoop/conf/core-site.xml)
  3. Sudo mkdir/usr/local/hadoop/tmp (Faites à nouveau le même répertoire)
  4. hadoop namenode -format (Formatez votre namenode)
  5. start-all.sh (Run Start All pour démarrer tout le processus hadoop)
  6. JPS (Il montrera les processus en cours)
1
Swapnil Gangrade

Étape 1: - Stop-all.sh

Étape 2: - arrivé à ce chemin 

cd /usr/local/hadoop/bin

Étape 3: - Exécutez cette commande Hadoop datanode

Maintenant, le travail de DataNode 

1
Sunil Suthar

Veuillez contrôler si la propriété de répertoire tmp pointe vers un répertoire valide dans core-site.xml

<property>
  <name>hadoop.tmp.dir</name>
  <value>/home/hduser/data/tmp</value>
</property>

Si le répertoire est mal configuré, le processus datanode ne démarrera pas correctement.

1
natbusa

Suivez ces étapes et votre code de données va recommencer.

  1. Arrêtez dfs.
  2. Ouvrez hdfs-site.xml
  3. Supprimez à nouveau les propriétés data.dir et name.dir de hdfs-site.xml et -format namenode.
  4. Ensuite, supprimez le répertoire hadoopdata et ajoutez les noms data.dir et name.dir dans hdfs-site.xml et formatez à nouveau namenode.
  5. Puis relancez dfs.
1
Harish Pathak

Arrêtez tous les services - ./stop-all.shFormat tous les répertoires hdfs tmp de tous les maîtres et esclaves. N'oubliez pas de formater à partir d'esclave.

Formatez le namenode. (Hadoop namenode -format)

Maintenant démarrez les services sur namenode ../bin/start-all.sh 

Cela a fait une différence pour moi pour démarrer le service de code de données.

1
Sneha Priya Ale

Vérifiez si la propriété hadoop.tmp.dir du core-site.xml est correctement définie . Si vous la définissez, accédez à ce répertoire et supprimez ou videz ce répertoire . Si vous ne l'avez pas définie, vous accédez à son dossier par défaut /tmp/hadoop-${user.name} De même, supprimez ou videz ce répertoire. 

1
Yang Chen
  1. Arrêtez le DFS et le fil d'abord.
  2. Supprimez les répertoires datanode et namenode comme indiqué dans le fichier core-site.xml. 
  3. Recréez les répertoires. 
  4. Puis redémarrez le fichier DFS et le fil comme suit.

    start-dfs.sh

    start-yarn.sh

    mr-jobhistory-daemon.sh démarrer historyserver

    J'espère que cela fonctionne bien.

1
KayV

Au lieu de tout supprimer dans "hadoop tmp dir", vous pouvez en définir un autre. Par exemple, si votre core-site.xml a cette propriété:

<property>
  <name>hadoop.tmp.dir</name>
  <value>/home/hduser/data/tmp</value>
</property>

Vous pouvez changer cela en:

<property>
  <name>hadoop.tmp.dir</name>
  <value>/home/hduser/data/tmp2</value>
</property>

puis scp core-site.xml sur chaque noeud, puis "hadoop namenode -format", puis redémarrez hadoop.

0
JackeyXu

Supprimez le code de données sous votre dossier hadoop, puis réexécutez start-all.sh.

0
Gajendra K S

si le formatage du répertoire tmp ne fonctionne pas, essayez ceci:

  1. tout d’abord, arrêtez toutes les entités telles que namenode, datanode, etc. (vous aurez. un script ou une commande pour le faire.)
  2. Formater le répertoire tmp
  3. Allez dans/var/cache/hadoop-hdfs/hdfs/dfs/et supprimez tout le contenudans le répertoire manuellement
  4. Maintenant, formatez à nouveau votre namenode
  5. démarrez toutes les entités puis utilisez la commande jps pour confirmer que le datanode a été démarré
  6. Maintenant, lancez l'application que vous avez

J'espère que cela t'aides.

0
The joker

Même après avoir supprimé la refonte des répertoires, le code de données ne commençait pas… .. Donc, je l’ai démarré manuellement en utilisant bin/hadoop datanode Il n’est pas parvenu à une conclusion. J'ai ouvert un autre terminal à partir du même nom d'utilisateur et ai jps et il m'a montré le processus de datanode en cours . Ça fonctionne, mais je dois juste garder le terminal inachevé ouvert à côté.

0
Argha Nandan

Suivez ces étapes et votre code de données va recommencer.

1) Arrêtez dfs . 2) Ouvrez hdfs-site.xml 3) Supprimez à nouveau les propriétés data.dir et name.dir de hdfs-site.xml et -format namenode.

4) Puis relancez dfs.

0
PANDURANG BHADANGE

J'ai les détails du problème dans le fichier journal comme ci-dessous: "Répertoire invalide dans dfs.data.dir: autorisation incorrecte pour/home/hdfs/dnman1, attendu: rwxr-xr-x, while real: rwxrwxr-x " et à partir de là, j’ai identifié que l’autorisation de fichier de note de données était 777 pour mon dossier. J'ai corrigé à 755 et cela a commencé à fonctionner. 

0
user1431921
  1. J'ai configuré hadoop.tmp.dir dans conf/core-site.xml 
  2. J'ai configuré dfs.data.dir dans conf/hdfs-site.xml
  3. J'ai configuré dfs.name.dir dans conf/hdfs-site.xml 
  4. Tout supprimé dans le répertoire "/ tmp/hadoop- /" 
  5. Autorisations de fichier modifiées de 777 à 755 pour le répertoire répertorié sous dfs.data.dir

    Et le nœud de données a commencé à fonctionner.

0
Bhaskar

J'ai la même erreur. J'ai essayé de démarrer et d'arrêter dfs plusieurs fois, d'effacer tous les répertoires mentionnés dans les réponses précédentes, mais rien n'y fait.

Le problème a été résolu uniquement après le redémarrage du système d'exploitation et la configuration de Hadoop à partir de rien. (configurer Hadoop à partir de rien, sans redémarrer, n'a pas fonctionné)

0
Pavel Lopatin

Vous devez vérifier:

/ app/hadoop/tmp/dfs/data/current/VERSION et/app/hadoop/tmp/dfs/name/current/VERSION ---

dans ces deux fichiers et cela en ID d'espace de noms du nom node et datanode.

Si et seulement si NamespaceID du noeud de données est identique à NamespaceID de name noeud, votre datanode sera exécuté.

Si ceux-ci sont différents, copiez le NamespaceID namenode dans le NamespaceID de votre Datanode en utilisant l'éditeur vi ou gedit, puis enregistrez et exécutez à nouveau les démons.

0
sindhu Y

Essaye ça

  1. stop-all.sh
  2. vi hdfs-site.xml
  3. changer la valeur donnée pour la propriété dfs.data.dir
  4. format namenode
  5. start-all.sh
0
Neha Milak

Besoin de suivre 3 étapes.

(1) Nécessité d'accéder aux journaux et de consulter le dernier journal (In hadoop - 2.6.0/logs/hadoop-datanode-ubuntu.log)

Si l'erreur est comme 

Java.io.IOException: ID de cluster incompatibles dans/home/kutty/work/hadoop2data/dfs/data: namenode clusterID = CID-c41df580-e197-4db6-a02a-a62b71463089 ; nom de groupe clusterID = CID-a5f4ba24-3a56-4125-9137-fa77c5bb07b1

c'est-à-dire que l'identifiant de cluster à namenode et l'identifiant de cluster à datanode ne sont pas identiques.

(2) Maintenant, copiez le namenode clusterID qui est CID-c41df580-e197-4db6-a02a-a62b71463089 in error ci-dessus. 

(3) Remplacer l'ID de cluster Datanode par l'ID de cluster Namenode dans hadoopdata/dfs/data/current/version

clusterID = CID-c41df580-e197-4db6-a02a-a62b71463089

Redémarrez Hadoop. Exécutera DataNode

0
Chandra Mouli

Dans le cas de Mac OS (mode pseudo-distribué):

Terminal ouvert

  1. Arrêtez dfs. 'sbin/stop-all.sh'.
  2. cd /tmp
  3. rm -rf hadoop*
  4. Accédez au répertoire hadoop. Formatez les hdfs. bin/hdfs namenode -format
  5. sbin/start-dfs.sh
0
Anand Prakash

Une fois que j’étais incapable de trouver le noeud de données utilisant jps dans hadoop, j’ai supprimé le dossier Current du répertoire installé de hadoop (/opt/hadoop-2.7.0/hadoop_data/dfs/data) et redémarré hadoop à l’aide de start-all.sh et jps.

Cette fois, j'ai pu trouver le nœud de données et le dossier en cours a été créé à nouveau.

0
Kajal Sharma

Ceci est pour la version plus récente de Hadoop (je suis en cours d'exécution 2.4.0)

  • Dans ce cas, arrêtez le cluster sbin/stop-all.sh
  • Ensuite, allez dans/etc/hadoop pour les fichiers de configuration.

Dans le fichier: hdfs-site.xml Recherchez les chemins de répertoire correspondant à Dfs.namenode.name.dir Dfs.namenode.data.dir

  • Supprimez les deux répertoires de manière récursive (rm -r).
  • Formatez maintenant le namenode via bin/hadoop namenode -format
  • Et enfin sbin/start-all.sh

J'espère que cela t'aides.

0
apurva.nandan