web-dev-qa-db-fra.com

DataNode ne démarre pas dans un seul nœud hadoop 2.6.0

J'ai installé hadoop 2.6.0 sur mon ordinateur portable exécutant Ubuntu 14.04LTS. J'ai démarré avec succès les démons hadoop en exécutant start-all.sh et j'ai exécuté un exemple WourdCount avec succès, puis j'ai essayé d'exécuter un exemple jar qui ne fonctionnait pas avec moi, donc j'ai décidé de formater à l'aide de hadoop namenode -format et tout recommencer mais quand je démarre tous les démons en utilisant start-dfs.sh && start-yarn.sh puis jps exécute tous les démons mais pas le code de données comme indiqué ci-dessous:

hdferas@feras-Latitude-E4310:/usr/local/hadoop$ jps
12628 NodeManager
12110 NameNode
12533 ResourceManager
13335 Jps
12376 SecondaryNameNode

Comment résoudre ça?

19
Firas M. Awaysheh

J'ai rencontré ce problème et il est très facile à résoudre. Votre datanode ne démarre pas car après le démarrage de votre namenode et de votre datanode, vous avez à nouveau formaté le namenode. Cela signifie que vous avez effacé les métadonnées du namenode. Maintenant, les fichiers que vous avez stockés pour exécuter le décompte de mots sont toujours dans le datanode et datanode n'a aucune idée où envoyer les rapports de bloc depuis que vous avez formaté le namenode afin qu'il ne démarre pas.

Voici les choses que vous devez faire pour y remédier. Arrêtez tous les services Hadoop (stop-all.sh) et fermez toutes les connexions ssh actives.

cat /usr/local/hadoop/etc/hadoop/hdfs-site.xml

Cette étape est importante, voyez où les données du datanode sont stockées. Il s'agit de la valeur associée à datanode.data.dir. Pour moi, c'est/usr/local/hadoop/hadoop_data/hdfs/datanode. Ouvrez votre terminal et accédez au répertoire ci-dessus et supprimez le répertoire nommé courant qui sera là sous ce répertoire. Assurez-vous que vous supprimez uniquement le répertoire "actuel".

Sudo rm -r /usr/local/hadoop/hadoop_data/hdfs/datanode/current

Formatez maintenant le namenode et vérifiez si tout va bien.

hadoop namenode -format

dites oui si cela vous demande quelque chose.

jps

J'espère que ma réponse résout le problème. Si cela ne me le fait pas savoir.

Petit conseil: ne formatez pas votre namenode. Sans namenode, il n'y a aucun moyen de reconstruire les données. Si votre nombre de mots ne fonctionne pas, c'est un autre problème.

52
Srimanth

Il vous suffit de supprimer tout le contenu du dossier DataNode et de formater le datanode à l'aide de la commande suivante

hadoop namenode -format
5
Piyush Yadav

J'ai également eu ce problème lors du formatage du namenode. Ce que j'ai fait pour résoudre le problème était:

  1. Trouver votre dfs.name.dir emplacement. Considérez par exemple votre dfs.name.dir est /home/hadoop/hdfs.

(a) Maintenant, allez à, /home/hadoop/hdfs/current.

(b) Recherchez le fichier VERSION. Ouvrez-le à l'aide d'un éditeur de texte.

(c) Il y aura une ligne namespaceID=122684525 (122684525 est mon identifiant, le vôtre sera différent). Notez l'ID.

  1. Maintenant, trouvez votre hadoop.tmp.dir emplacement. Le mien est /home/hadoop/temp.

(a) Allez à /home/hadoop/temp/dfs/data/current.

(b) Recherchez le fichier VERSION et ouvrez-le à l'aide d'un éditeur de texte.

(c) Il y aura une ligne namespaceID=. Le namespaceID dans ce fichier et le précédent doivent être identiques.

(d) C'est la principale raison pour laquelle mon datanode n'a pas été démarré. Je les ai faits tous les deux de la même façon et maintenant le datanode commence bien.

Remarque: copiez le namespaceID de /home/hadoop/hdfs/current/VERSION à /home/hadoop/temp/dfs/data/current/VERSION. Ne le faites pas à l'envers.

  1. Maintenant, faites start-dfs.sh && start-yarn.sh. Datanode va être démarré.
3
Rajesh N

Même j'ai eu le même problème et vérifié le journal et trouvé l'erreur ci-dessous

Exception - journal de datanode FATAL org.Apache.hadoop.hdfs.server.datanode.DataNode: exception dans secureMain Java.io.IOException: tous les répertoires de dfs.datanode.data.dir ne sont pas valides: "/ usr/local/hadoop_store/hdfs/datanode /

Exécutez la commande ci-dessous pour résoudre le problème

Sudo chown -R hduser: hadoop/usr/local/hadoop_store

Remarque - J'ai créé le namenode et le datanode sous le chemin/usr/local/hadoop_store

3
Vigneshwaran

Le problème ci-dessus est survenu en raison du formatage du namenode (hadoop namenode -format) sans arrêter les démons dfs et yarn. Lors du formatage du namenode, la question ci-dessous apparaît et vous appuyez sur la touche Y pour cela. Reformater le système de fichiers dans le répertoire de stockage/tmp/hadoop-root/dfs/name? (O ou N)

Solution, vous devez supprimer les fichiers dans le répertoire actuel (nom du répertoire) de dfs.name.dir, que vous mentionnez dans hdfs.site.xml. Dans mon système, dfs.name.dir est disponible dans/tmp/hadoop-root/dfs/name/current. rm -r/tmp/hadoop-root/dfs/name/current En utilisant le commentaire ci-dessus, j'ai supprimé les fichiers à l'intérieur du répertoire actuel. Assurez-vous que vous supprimez uniquement le répertoire "actuel". Formatez à nouveau le namenode après avoir arrêté les démons dfs et yarn (stop-dfs.sh & stop-yarn.sh). Le datanode va maintenant démarrer normalement !!

2

J'ai eu le même problème (DataNode & TaskTracker ne se présenterait pas).

RÉSOLUTION: SUPPRIMER CHAQUE SOUS-RÉPERTOIRE "COURANT" SOUS: données, nom et nom secondaire pour résoudre DataNode/taskTracker ne s'affichant pas lorsque vous démarrez-all.sh, puis jps

(Mon emplacement dfs.name.dir est:/home/training/hadoop-temp/dfs/data/current;/home/training/hadoop-temp/dfs/name/current;/home/formation/hadoop-temp/dfs/namesecondary/courant

Assurez-vous d'arrêter les services: stop-all.sh

1. Accédez à chaque sous-répertoire "courant" sous données, nom, nom secondaire et supprimez/supprimez (exemple: rm -r nom/courant)

2. Puis format: hadoop namenode -format

. mkdir actuel sous/home/training/hadoop-temp/dfs/data/current

4. Prenez le répertoire et le contenu de/home/training/hadoop-temp/dfs/name/current et copiez-le dans le répertoire/data/current

EXEMPLE: fichiers sous:

/ accueil/formation/hadoop-temp/dfs/nom/actuel

[formation @ CentOS actuel] $ ls -l

-rw-rw-r--. 1 formation formation 9901 25 septembre 01:50 modifications

-rw-rw-r--. 1 formation formation 582 25 sept. 01:50 fsimage

-rw-rw-r--. 1 formation formation 8 sept 25 01:50 fstime

-rw-rw-r--. 1 formation formation 101 25 septembre 01:50 VERSION

5. Remplacez storageType = NAME_NODE dans VERSION par storageType = DATA_NODE dans les données/courant/VERSION que vous venez de copier.

AVANT:

[training @ CentOS dfs] $ cat data/current/VERSION

namespaceID = 1018374124

cTime = 0

storageType = NAME_NODE

layoutVersion = -32

APRÈS:

[training @ CentOS dfs] $ cat data/current/VERSION

namespaceID = 1018374124

cTime = 0

storageType = DATA_NODE

layoutVersion = -32

6. Assurez-vous que chaque sous-répertoire ci-dessous a les mêmes fichiers que name/current a pour les données, le nom, le nom secondaire

[formation @ CentOS dfs] $ pwd

/ accueil/formation/hadoop-temp/dfs /

[formation @ CentOS dfs] $ ls -l

12 au total

drwxr-xr-x. 5 training training 4096 Sep 25 01:29 données

drwxrwxr-x. 5 entraînements entraînement 4096 25 sept 01:19 nom

drwxrwxr-x. 5 formation formation 4096 25 sept. 01:29 secondaire

7. Maintenant, lancez les services: start-all.sh Vous devriez voir les 5 services lorsque vous tapez: jps

J'utilise hadoop-2.6.0. J'ai résolu en utilisant:

Suppression de tous les fichiers dans/usr/local/hadoop_store/hdfs

commande: Sudo rm -r/usr/local/hadoop_store/hdfs/*

2.Format hadoop namenode

commande: hadoop namenode -format

3.Allez dans le répertoire ..../sbin (cd/usr/local/hadoop/sbin)

start-all.sh

  1. utilisez la commande ==> hduser @ abc-3551:/$ jps

Les services suivants commenceraient maintenant:

19088 Jps
18707 ResourceManager
19043 NodeManager
18535 SecondaryNameNode
18329 DataNode
18159 NameNode
0
ashu17188

sur core-site.xml, vérifiez le chemin absolu du répertoire temporaire, s'il n'est pas pointé correctement ou qu'il n'a pas été créé (mkdir). Le nœud de données ne peut pas être démarré.

0
dhilip77

ajouter la propriété ci-dessous dans yarn-site.xml

<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
<property>
    <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
    <value>org.Apache.hadoop.mapred.ShuffleHandler</value>
</property>
0
shridhar mangoji

pas la bonne façon de le faire. mais ça marche sûrement ~

supprimez les fichiers de votre dossier datanode, namenode et tmp. tous les fichiers/dossiers créés à l'intérieur de ceux-ci sont la propriété de hadoop et peuvent avoir une référence aux détails du dernier datanode qui peuvent avoir échoué ou verrouillé en raison desquels le datanode ne démarre pas à la prochaine tentative

0
user1332909