Pas de données nœuds sont démarrés
J'essaye de configurer version Hadoop 0.20.203.0 dans un pseudo configuration distribuée en utilisant le guide suivant:
http://www.javacodegeeks.com/2012/01/hadoop-modes-explained-standalone.html
Après l'exécution de la start-all.sh
script que j'ai exécuter "jps".
J'obtiens ce résultat:
4825 NameNode
5391 TaskTracker
5242 JobTracker
5477 Jps
5140 SecondaryNameNode
Lorsque j'essaie d'ajouter des informations à la sf à l'aide de:
bin/hadoop fs -put conf input
J'ai une erreur:
hadoop@m1a2:~/software/hadoop$ bin/hadoop fs -put conf input
12/04/10 18:15:31 WARN hdfs.DFSClient: DataStreamer Exception: org.apache.hadoop.ipc.RemoteException: java.io.IOException: File /user/hadoop/input/core-site.xml could only be replicated to 0 nodes, instead of 1
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:1417)
at org.apache.hadoop.hdfs.server.namenode.NameNode.addBlock(NameNode.java:596)
at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:523)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1383)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1379)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:416)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1059)
at org.apache.hadoop.ipc.Server$Handler.run(Server.java:1377)
at org.apache.hadoop.ipc.Client.call(Client.java:1030)
at org.apache.hadoop.ipc.RPC$Invoker.invoke(RPC.java:224)
at $Proxy1.addBlock(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:82)
at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:59)
at $Proxy1.addBlock(Unknown Source)
at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.locateFollowingBlock(DFSClient.java:3104)
at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.nextBlockOutputStream(DFSClient.java:2975)
at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.access$2000(DFSClient.java:2255)
at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream$DataStreamer.run(DFSClient.java:2446)
12/04/10 18:15:31 WARN hdfs.DFSClient: Error Recovery for block null bad datanode[0] nodes == null
12/04/10 18:15:31 WARN hdfs.DFSClient: Could not get block locations. Source file "/user/hadoop/input/core-site.xml" - Aborting...
put: java.io.IOException: File /user/hadoop/input/core-site.xml could only be replicated to 0 nodes, instead of 1
12/04/10 18:15:31 ERROR hdfs.DFSClient: Exception closing file /user/hadoop/input/core-site.xml : org.apache.hadoop.ipc.RemoteException: java.io.IOException: File /user/hadoop/input/core-site.xml could only be replicated to 0 nodes, instead of 1
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:1417)
at org.apache.hadoop.hdfs.server.namenode.NameNode.addBlock(NameNode.java:596)
at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:523)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1383)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1379)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:416)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1059)
at org.apache.hadoop.ipc.Server$Handler.run(Server.java:1377)
org.apache.hadoop.ipc.RemoteException: java.io.IOException: File /user/hadoop/input/core-site.xml could only be replicated to 0 nodes, instead of 1
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:1417)
at org.apache.hadoop.hdfs.server.namenode.NameNode.addBlock(NameNode.java:596)
at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:523)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1383)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1379)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:416)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1059)
at org.apache.hadoop.ipc.Server$Handler.run(Server.java:1377)
at org.apache.hadoop.ipc.Client.call(Client.java:1030)
at org.apache.hadoop.ipc.RPC$Invoker.invoke(RPC.java:224)
at $Proxy1.addBlock(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:82)
at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:59)
at $Proxy1.addBlock(Unknown Source)
at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.locateFollowingBlock(DFSClient.java:3104)
at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.nextBlockOutputStream(DFSClient.java:2975)
at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.access$2000(DFSClient.java:2255)
at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream$DataStreamer.run(DFSClient.java:2446)
Je ne suis pas totalement sûr, mais je crois que cela peut avoir à faire avec le fait que le datanode n'est pas en cours d'exécution.
Quelqu'un sait ce que j'ai fait de mal, ou comment résoudre ce problème?
EDIT: C'est le datanode.fichier journal:
2012-04-11 12:27:28,977 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting DataNode
STARTUP_MSG: host = m1a2/139.147.5.55
STARTUP_MSG: args = []
STARTUP_MSG: version = 0.20.203.0
STARTUP_MSG: build = http://svn.apache.org/repos/asf/hadoop/common/branches/branch-0.20-security-203 -r 1099333; compiled by 'oom' on Wed May 4 07:57:50 PDT 2011
************************************************************/
2012-04-11 12:27:29,166 INFO org.apache.hadoop.metrics2.impl.MetricsConfig: loaded properties from hadoop-metrics2.properties
2012-04-11 12:27:29,181 INFO org.apache.hadoop.metrics2.impl.MetricsSourceAdapter: MBean for source MetricsSystem,sub=Stats registered.
2012-04-11 12:27:29,183 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: Scheduled snapshot period at 10 second(s).
2012-04-11 12:27:29,183 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: DataNode metrics system started
2012-04-11 12:27:29,342 INFO org.apache.hadoop.metrics2.impl.MetricsSourceAdapter: MBean for source ugi registered.
2012-04-11 12:27:29,347 WARN org.apache.hadoop.metrics2.impl.MetricsSystemImpl: Source name ugi already exists!
2012-04-11 12:27:29,615 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Incompatible namespaceIDs in /tmp/hadoop-hadoop/dfs/data: namenode namespaceID = 301052954; datanode namespaceID = 229562149
at org.apache.hadoop.hdfs.server.datanode.DataStorage.doTransition(DataStorage.java:232)
at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:147)
at org.apache.hadoop.hdfs.server.datanode.DataNode.startDataNode(DataNode.java:354)
at org.apache.hadoop.hdfs.server.datanode.DataNode.<init>(DataNode.java:268)
at org.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNode.java:1480)
at org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:1419)
at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:1437)
at org.apache.hadoop.hdfs.server.datanode.DataNode.secureMain(DataNode.java:1563)
at org.apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.java:1573)
2012-04-11 12:27:29,617 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down DataNode at m1a2/139.147.5.55
************************************************************/
- Avez-vous essayé de démarrer le datanode? Essayez
sudo /etc/init.d/hadoop-0.20-datanode start
- Et si vous avez, vous pouvez poster les logs pour le nœud de données?
- ses propos datanode..pouvez-vous mettre à jour datanode journaux et aussi vous r fichiers de configuration.
- J'ai essayé de lancer le datanode à l'aide de
bin/hadoop-daemon.sh start datanode'code
le datanode.journal contient une IO erreur que j'ai ajouté au post ci-dessus. - 4825 NameNode 5391 TaskTracker 5242 JobTracker 5477 Jps 5140 SecondaryNameNode Regardez ici votre datanode n'est pas en cours d'exécution 🙂
Vous devez vous connecter pour publier un commentaire.
Que l'erreur que vous obtenez dans le DN journal est décrit ici: http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-multi-node-cluster/#java-io-ioexception-incompatible-namespaceids
À partir de cette page:
À l'heure actuelle, il semble y avoir deux solutions de contournement comme décrit ci-dessous.
Solution 1: Commencer à partir de zéro
Je peux témoigner que les étapes suivantes résoudre cette erreur, mais les effets secondaires ne vous rendra pas heureux (moi non plus). Le brut solution de contournement que j'ai trouvé est de:
Lors de la suppression de toutes les données HDFS et de partir de zéro n'est pas une bonne idée (il pourrait être ok lors de la configuration initiale/essais), vous pourriez donner la deuxième approche de l'essayer.
Solution 2: mise à Jour namespaceID de la problématique DataNodes
Grand merci à Jared Stehler pour la suggestion suivante. Je ne l'ai pas testé moi-même encore, mais n'hésitez pas à l'essayer et à m'envoyer vos commentaires. Cette solution de contournement est “mini-invasive”, comme vous n'avez qu'à éditer un fichier sur la problématique DataNodes:
Si vous avez suivi les instructions dans mes tutoriels, le chemin d'accès complet des fichiers concernés sont:
Si vous vous demandez comment le contenu de la VERSION ressembler, voici un des miens:
Bon, je poste ce une fois de plus:
Dans le cas où quelqu'un a besoin de cela, pour une version plus récente de Hadoop (je suis en cours d'exécution 2.4.0)
Dans ce cas, arrêter le cluster
sbin/stop-all.sh
Ensuite, allez à
/etc/hadoop
pour les fichiers de config.Dans le fichier: hdfs-site.xml Regarder dehors pour les chemins de répertoire correspondant à dfs.namenode.nom.dir dsf.namenode.les données.dir
Supprimer les répertoires de manière récursive (rm-r).
Maintenant formater le namenode via
bin/hadoop namenode -format
Et enfin
sbin/start-all.sh
Espère que cette aide.
J'ai eu le même problème sur les pseudo-nœud à l'aide de hadoop1.1.2
Alors, j'ai couru bin/stop-all.sh pour arrêter le cluster
alors vu la configuration de mon hadoop dans le répertoire tmp hdfs-site.xml
Je suis donc allé dans /root/data/hdfstmp et supprimé tous les fichiers à l'aide de la commande (vous pouvez perdre ur de données)
et puis le format namenode nouveau
puis démarrer le cluster à l'aide de
Raison principale est bin/hadoop namenode -format de ne pas supprimer les anciennes données. Nous avons donc de le supprimer manuellement.
/tmp/hadoop-${user.name}/dfs/data
.Faire les étapes suivantes:
Essayer de formater votre datanode et de le redémarrer.
J'ai été en utilisant CDH4 que ma version d'hadoop et ont eu du mal à le configurer. Même après avoir essayé de reformater mon namenode, j'étais encore à la réception de l'erreur.
Ma VERSION de fichier est situé dans
Vous pouvez trouver l'emplacement de la HDFS répertoire de cache par la recherche de la hadoop.tmp.dir propriété:
J'ai constaté qu'en faisant
et puis reformater le namenode j'ai finalement été en mesure de résoudre le problème. Merci pour la première réponse, pour m'aider à comprendre ce dossier j'avais besoin de la bombe.
J'ai essayé avec la méthode 2, tel que suggéré par Jared Stehler dans le Chris Shain réponse et je peux vous confirmer qu'après avoir fait ces changements , j'ai été en mesure de résoudre le problème mentionné ci-dessus.
J'ai utilisé le même numéro de version à la fois le nom et la VERSION des données de fichier. Dire copié le numéro de version de la VERSION de fichier à l'intérieur (/app/hadoop/tmp/dfs/nom de/en cours) à la VERSION à l'intérieur (/app/hadoop/tmp/dfs/data/courant) et cela a fonctionné comme un charme
Cheers !
J'ai rencontré ce problème lors de l'utilisation d'un non modifié cloudera de démarrage de la vm 4.4.0-1
Pour référence, le cloudera manager dit mon datanode était en bonne santé, même si le message d'erreur dans le DataStreamer stacktrace dit non datanodes ont été en cours d'exécution.
de crédit va à la solution n ° 2 de https://stackoverflow.com/a/10110369/249538 mais je vais vous décrire en détail mon expérience spécifique en utilisant la cloudera de démarrage de la vm.
Plus précisément, j'ai fait:
dans cet ordre d'arrêter les services
hue1, hive1, mapreduce1, hdfs1
via le cloudera manager http://localhost.localdomain:7180/cmf/services/status
trouvé mon
VERSION
fichiers via:sudo find /-name VERSION
j'ai eu:
j'ai vérifié le contenu de ces fichiers, mais ils avaient tous une correspondance
namespaceID
sauf un dossier était juste totalement absente. j'ai donc ajouté une entrée à elle.puis j'ai redémarré les services dans l'ordre inverse par la cloudera manager.
maintenant, je peux
-put
trucs sur hdfs.Dans mon cas, j'ai tort de définir une destination pour
dfs.name.dir
etdfs.data.dir
. Le format correct estJ'ai le même problème avec datanode manquant
et j'ai suivi cette étape qui a fonctionné pour moi
1.recherchez le dossier qui datanode situé dans.
cd hadoop/hadoopdata/hdfs
2.regarder dans le dossier et vous allez voir ce fichier que vous avez dans hdfs
ls
3.supprimer le datanode dossier parce que c'est l'ancienne version de datanode
rm-rf/datanode/*
4. vous obtiendrez la nouvelle version après exécution de la commande précédente
5. commencer de nouvelles datanode
hadoop-daemon.sh début datanode
6. actualiser le site web des services. Vous verrez la perdu nœud apparaît
de mon terminal