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?
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.
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
J'ai également eu ce problème lors du formatage du namenode. Ce que j'ai fait pour résoudre le problème était:
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.
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.
start-dfs.sh && start-yarn.sh
. Datanode va être démarré.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
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 !!
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
Les services suivants commenceraient maintenant:
19088 Jps
18707 ResourceManager
19043 NodeManager
18535 SecondaryNameNode
18329 DataNode
18159 NameNode
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é.
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>
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