web-dev-qa-db-fra.com

Hadoop: processus Datanode tué

J'utilise actuellement Hadoop-2.0.3-alpha et après avoir pu parfaitement travailler avec HDFS (copier des fichiers dans HDFS, obtenir le succès à partir d'un framework externe, utiliser le webfrontend), après un nouveau démarrage de ma VM, le processus de datanode s'arrête après un moment. Le processus de namenode et tous les processus de fil fonctionnent sans problème. J'ai installé Hadoop dans un dossier sous un utilisateur supplémentaire, car j'ai également encore installé Hadoop 0.2, qui fonctionnait bien également. En jetant un œil au fichier journal de tous les processus de datanode, j'ai obtenu les informations suivantes:

2013-04-11 16:23:50,475 WARN org.Apache.hadoop.util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-Java classes where applicable
2013-04-11 16:24:17,451 INFO org.Apache.hadoop.metrics2.impl.MetricsConfig: loaded properties from hadoop-metrics2.properties
2013-04-11 16:24:23,276 INFO org.Apache.hadoop.metrics2.impl.MetricsSystemImpl: Scheduled snapshot period at 10 second(s).
2013-04-11 16:24:23,279 INFO org.Apache.hadoop.metrics2.impl.MetricsSystemImpl: DataNode metrics system started
2013-04-11 16:24:23,480 INFO org.Apache.hadoop.hdfs.server.datanode.DataNode: Configured hostname is user-VirtualBox
2013-04-11 16:24:28,896 INFO org.Apache.hadoop.hdfs.server.datanode.DataNode: Opened streaming server at /0.0.0.0:50010
2013-04-11 16:24:29,239 INFO org.Apache.hadoop.hdfs.server.datanode.DataNode: Balancing bandwith is 1048576 bytes/s
2013-04-11 16:24:38,348 INFO org.mortbay.log: Logging to org.slf4j.impl.Log4jLoggerAdapter(org.mortbay.log) via org.mortbay.log.Slf4jLog
2013-04-11 16:24:44,627 INFO org.Apache.hadoop.http.HttpServer: Added global filter 'safety' (class=org.Apache.hadoop.http.HttpServer$QuotingIn putFilter)
2013-04-11 16:24:45,163 INFO org.Apache.hadoop.http.HttpServer: Added filter static_user_filter (class=org.Apache.hadoop.http.lib.StaticUserWebFil ter$StaticUserFilter) to context datanode
2013-04-11 16:24:45,164 INFO org.Apache.hadoop.http.HttpServer: Added filter static_user_filter (class=org.Apache.hadoop.http.lib.StaticUserWebFil ter$StaticUserFilter) to context logs
2013-04-11 16:24:45,164 INFO org.Apache.hadoop.http.HttpServer: Added filter static_user_filter (class=org.Apache.hadoop.http.lib.StaticUserWebFil ter$StaticUserFilter) to context static
2013-04-11 16:24:45,355 INFO org.Apache.hadoop.hdfs.server.datanode.DataNode: Opened info server at 0.0.0.0:50075
2013-04-11 16:24:45,508 INFO org.Apache.hadoop.hdfs.server.datanode.DataNode: dfs.webhdfs.enabled = false
2013-04-11 16:24:45,536 INFO org.Apache.hadoop.http.HttpServer: Jetty bound to port 50075
2013-04-11 16:24:45,576 INFO org.mortbay.log: jetty-6.1.26
2013-04-11 16:25:18,416 INFO org.mortbay.log: Started [email protected]:50075
2013-04-11 16:25:42,670 INFO org.Apache.hadoop.ipc.Server: Starting Socket Reader #1 for port 50020
2013-04-11 16:25:44,955 INFO org.Apache.hadoop.hdfs.server.datanode.DataNode: Opened IPC server at /0.0.0.0:50020
2013-04-11 16:25:45,483 INFO org.Apache.hadoop.hdfs.server.datanode.DataNode: Refresh request received for nameservices: null
2013-04-11 16:25:47,079 INFO org.Apache.hadoop.hdfs.server.datanode.DataNode: Starting BPOfferServices for nameservices: <default>
2013-04-11 16:25:47,660 INFO org.Apache.hadoop.hdfs.server.datanode.DataNode: Block pool <registering> (storage id unknown) service to localhost/127.0.0.1:8020 starting to offer service
2013-04-11 16:25:50,515 INFO org.Apache.hadoop.ipc.Server: IPC Server Responder: starting
2013-04-11 16:25:50,631 INFO org.Apache.hadoop.ipc.Server: IPC Server listener on 50020: starting
2013-04-11 16:26:15,068 INFO org.Apache.hadoop.hdfs.server.common.Storage: Lock on /home/hadoop/workspace/hadoop_space/hadoop23/dfs/data/in_use.lock acquired by nodename 3099@user-VirtualBox
2013-04-11 16:26:15,720 FATAL org.Apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for block pool Block pool BP-474150866-127.0.1.1-1365686732002 (storage id DS-317990214-127.0.1.1-50010-1365505141363) service to localhost/127.0.0.1:8020
Java.io.IOException: Incompatible clusterIDs in /home/hadoop/workspace/hadoop_space/hadoop23/dfs/data: namenode clusterID = CID-1745a89c-fb08-40f0-a14d-d37d01f199c3; datanode clusterID = CID-bb3547b0-03e4-4588-ac25-f0299ff81e4f
at org.Apache.hadoop.hdfs.server.datanode.DataStorage .doTransition(DataStorage.Java:391)
at org.Apache.hadoop.hdfs.server.datanode.DataStorage .recoverTransitionRead(DataStorage.Java:191)
at org.Apache.hadoop.hdfs.server.datanode.DataStorage .recoverTransitionRead(DataStorage.Java:219)
at org.Apache.hadoop.hdfs.server.datanode.DataNode.in itStorage(DataNode.Java:850)
at org.Apache.hadoop.hdfs.server.datanode.DataNode.in itBlockPool(DataNode.Java:821)
at org.Apache.hadoop.hdfs.server.datanode.BPOfferServ ice.verifyAndSetNamespaceInfo(BPOfferService.Java: 280)
at org.Apache.hadoop.hdfs.server.datanode.BPServiceAc tor.connectToNNAndHandshake(BPServiceActor.Java:22 2)
at org.Apache.hadoop.hdfs.server.datanode.BPServiceAc tor.run(BPServiceActor.Java:664)
at Java.lang.Thread.run(Thread.Java:722)
2013-04-11 16:26:16,212 WARN org.Apache.hadoop.hdfs.server.datanode.DataNode: Ending block pool service for: Block pool BP-474150866-127.0.1.1-1365686732002 (storage id DS-317990214-127.0.1.1-50010-1365505141363) service to localhost/127.0.0.1:8020
2013-04-11 16:26:16,276 INFO org.Apache.hadoop.hdfs.server.datanode.DataNode: Removed Block pool BP-474150866-127.0.1.1-1365686732002 (storage id DS-317990214-127.0.1.1-50010-1365505141363)
2013-04-11 16:26:18,396 WARN org.Apache.hadoop.hdfs.server.datanode.DataNode: Exiting Datanode
2013-04-11 16:26:18,940 INFO org.Apache.hadoop.util.ExitUtil: Exiting with status 0
2013-04-11 16:26:19,668 INFO org.Apache.hadoop.hdfs.server.datanode.DataNode: SHUTDOWN_MSG:
/************************************************** **********
SHUTDOWN_MSG: Shutting down DataNode at user-VirtualBox/127.0.1.1
************************************************** **********/

Des idées? Puis-je faire une erreur lors du processus d'installation? Mais c'est étrange, ça a marché une fois. Je dois également dire que si je suis connecté en tant qu'utilisateur supplémentaire pour exécuter les commandes ./hadoop-daemon.shstart namenode et la même chose avec le datanode, je dois ajouter Sudo.

J'ai utilisé ce guide d'installation: http://jugnu-life.blogspot.ie/2012/0...rial-023x.html

Au fait, j'utilise la version Oracle Java-7.

18
Hans Müller

Le problème pourrait être que le namenode a été formaté après la mise en place du cluster et que les datanodes ne l'ont pas été, donc les esclaves font toujours référence à l'ancien namenode.

Nous devons supprimer et recréer le dossier/home/hadoop/dfs/data sur le système de fichiers local pour le code de données.

  • Vérifiez votre fichier hdfs-site.xml pour voir où pointe dfs.data.dir
  • et supprimez ce dossier
  • puis redémarrez le démon de datanode sur la machine

Les étapes ci-dessus doivent recréer le dossier et résoudre le problème.

Veuillez partager vos informations de configuration si les instructions ci-dessus ne fonctionnent pas.

81
rVr

DataNode meurt à cause de Clusterids incompatibles. Pour résoudre ce problème Si vous utilisez hadoop 2.X, vous devez supprimer tout dans le dossier que vous avez spécifié dans hdfs-site.xml - "dfs.datanode.data.dir" (mais PAS le dossier lui-même).

Le ClusterID sera conservé dans ce dossier. Supprimez et redémarrez dfs.sh. Cela devrait fonctionner !!!

14
Pious Deepak
  1. Vous devez supprimer les deux
    C:\hadoop\data\dfs\datanode et
    C:\hadoop\data\dfs\namenode dossiers.

Si vous n'avez pas ces dossiers - ouvrez votre fichier C:\hadoop\etc\hadoop\hdfs-site.xml et obtenez les chemins d'accès à ces dossiers pour la prochaine suppression. Pour moi, cela dit:

<property>
    <name>dfs.namenode.name.dir</name>
    <value>file:/hadoop/data/dfs/namenode</value>
</property>
<property>
    <name>dfs.datanode.data.dir</name>
    <value>file:/hadoop/data/dfs/datanode</value>
</property>
  1. Exécuter la commande pour Format namenode
    c:\hadoop\bin>hdfs namenode -format

Maintenant ça devrait marcher!

5
Yuliia Ashomok

Je pense que la façon recommandée de le faire sans supprimer le répertoire de données est de simplement changer la variable clusterID dans le fichier VERSION du datanode.

Si vous regardez dans votre répertoire daemons, vous verrez l'exmaple du répertoire datanode

data/hadoop/daemons/datanode

Le fichier VERSION devrait ressembler à ceci.

cat current/VERSION 
#Tue Oct 14 17:31:58 CDT 2014
storageID=DS-23bf7f3a-085c-4531-808f-801ff6d52d14
clusterID=CID-bb3547b0-03e4-4588-ac25-f0299ff81e4f
cTime=0
datanodeUuid=63154929-ae68-4149-9f75-9a6558545041
storageType=DATA_NODE
layoutVersion=-55

Vous devez changer le clusterId à la première valeur dans la sortie du message donc dans votre cas qui serait CID-1745a89c-fb08-40f0-a14d-d37d01f199c3 au lieu de CID-bb3547b0-03e4-4588-ac25-f0299ff81e4f

La version mise à jour devrait apparaître comme ceci avec le clusterId modifié

  cat current/VERSION 
    #Tue Oct 14 17:31:58 CDT 2014
    storageID=DS-23bf7f3a-085c-4531-808f-801ff6d52d14
    clusterID=CID-1745a89c-fb08-40f0-a14d-d37d01f199c3
    cTime=0
    datanodeUuid=63154929-ae68-4149-9f75-9a6558545041
    storageType=DATA_NODE
    layoutVersion=-55

Redémarrez hadoop et le datanode devrait démarrer très bien.

4
Chris Hinshaw