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
************************************************************/
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.
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!
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 avechadoop-x.x.x/bin/hadoop datanode
J'ai rencontré un problème similaire lors de l'exécution du code de données. Les étapes suivantes ont été utiles.
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
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
Dans [hadoop_directory]/bin, utilisez
hadoop namenode -format (To format your namenode)
Exécuter les commandes ci-dessous en ligne: -
É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
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.
Suivez ces étapes et votre code de données va recommencer.
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.
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.
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.
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.
Supprimez le code de données sous votre dossier hadoop, puis réexécutez start-all.sh.
si le formatage du répertoire tmp ne fonctionne pas, essayez ceci:
J'espère que cela t'aides.
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é.
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.
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.
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.
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é)
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.
Essaye ça
dfs.data.dir
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
Dans le cas de Mac OS (mode pseudo-distribué):
Terminal ouvert
cd /tmp
rm -rf hadoop*
bin/hdfs namenode -format
sbin/start-dfs.sh
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.
Ceci est pour la version plus récente de Hadoop (je suis en cours d'exécution 2.4.0)
Dans le fichier: hdfs-site.xml Recherchez les chemins de répertoire correspondant à Dfs.namenode.name.dir Dfs.namenode.data.dir
J'espère que cela t'aides.