2013-04-15 17 views
18

Ich benutze derzeit Hadoop-2.0.3-alpha und nachdem ich perfekt mit HDFS arbeiten konnte (Kopieren von Dateien in HDFS, Erfolg von einem externen Framework, mit dem Webfrontend), nach einem Neustart von Meine VM, der Datanode-Prozess wird nach einer Weile gestoppt. Der namenode-Prozess und alle Garnprozesse funktionieren problemlos. Ich habe Hadoop in einem Ordner unter einem zusätzlichen Benutzer installiert, da ich auch Hadoop 0.2 installiert habe, was auch gut funktionierte. einen Blick auf die Log-Datei aller DataNode Prozesse Unter bekam ich folgende Informationen:Hadoop: Datanode Prozess getötet

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 [email protected] 
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 
************************************************** **********/ 

Irgendwelche Ideen? Kann ich bei der Installation einen Fehler gemacht haben? Aber es ist seltsam, dass es einmal funktioniert hat. Ich muss auch sagen, dass, wenn ich als mein zusätzlicher Benutzer angemeldet bin, um die Befehle ./hadoop-daemon.sh und das gleiche mit dem Datenknoten auszuführen, ich Sudo hinzufügen muss.

Ich benutzte diese Installationsanleitung: http://jugnu-life.blogspot.ie/2012/0...rial-023x.html

By the way, verwende ich die Oracle Java-7-Version.

Antwort

81

Das Problem könnte sein, dass der namenode nach dem Einrichten des Clusters formatiert wurde und die Datanodes nicht, daher beziehen sich die Slaves immer noch auf den alten namenode.

Wir müssen den Ordner/home/hadoop/dfs/data im lokalen Dateisystem für den Datanode löschen und neu erstellen.

  • Überprüfen Sie Ihre hdfs-site.xml Datei, um zu sehen, wo dfs.data.dir zeigt auf
  • und löschen Sie diesen Ordner
  • und starten Sie den DataNode Daemon auf der Maschine

Die obigen Schritte sollten den Ordner neu erstellen und das Problem beheben.

Bitte teilen Sie Ihre Konfigurationsdaten, wenn die obigen Anweisungen nicht funktionieren.

13

DataNode stirbt wegen inkompatibler Clusterids. So beheben Sie dieses Problem Wenn Sie hadoop 2.X verwenden, müssen Sie alles in dem Ordner löschen, den Sie in hdfs-site.xml - "dfs.datanode.data.dir" angegeben haben (aber NICHT den Ordner selbst). .

Die ClusterID wird in diesem Ordner verwaltet. Löschen und starten Sie dfs.sh neu. Das sollte funktionieren!!!

+3

löschen Sie alles ** unter dem Ordner, aber nicht selbst **, sonst Datanode wird nicht gestartet, weil es den Ordner nicht finden kann – manuzhang

4

Ich denke, der empfohlene Weg, dies zu tun, ohne das Datenverzeichnis zu löschen, ist einfach die Variable clusterID in der VERSION-Datei des Datanodes zu ändern.

Wenn Sie in Ihrem Daemons Verzeichnis suchen, werden Sie das DataNode Verzeichnis sehen exmaple

data/hadoop/daemons/datanode 

Die VERSION Datei sollte wie folgt aussehen.

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 

Sie müssen die ClusterID auf den ersten Wert in der Ausgabe der Nachricht ändern, so in Ihrem Fall, die CID-1745a89c-fb08-40f0-a14d-d37d01f199c3 statt CID-bb3547b0-03e4-4588 wäre -ac25-f0299ff81e4f

die aktualisierte Version sollte mit der veränderten ClusterID so aussehen

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 

Restart hadoop und die DataNode sollte gut starten.

5
  1. Sie benötigen beide
    C löschen: \ hadoop \ data \ dfs \ DataNode und
    C: \ hadoop \ data \ dfs \ NameNode Ordner.

Wenn Sie nicht über diese Ordner haben - öffnen Sie Ihre C: \ hadoop \ etc \ hadoop \ hdfs-site.xml Datei und erhalten Pfade zu diesem Ordner für die nächste Löschung. Für mich heißt es:

<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. Befehl Ausführen für Format NameNode
    c:\hadoop\bin>hdfs namenode -format

Jetzt sollte es funktionieren!

Verwandte Themen