wake-up-neo.net

Es werden keine Datenknoten gestartet

Ich versuche, Hadoop-Version 0.20.203.0 in einer pseudo-verteilten Konfiguration unter Verwendung der folgenden Anleitung einzurichten: 

http://www.javacodegeeks.com/2012/01/hadoop-modes-explained-standalone.html

Nach dem Ausführen des start-all.sh-Skripts führe ich "jps" aus.

Ich bekomme diese Ausgabe:

4825 NameNode
5391 TaskTracker
5242 JobTracker
5477 Jps
5140 SecondaryNameNode

Wenn ich versuche, Informationen zu den HDFS hinzuzufügen, verwenden Sie:

bin/hadoop fs -put conf input

Ich habe einen Fehler erhalten:

[email protected]:~/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)

Ich bin nicht ganz sicher, aber ich glaube, dass dies mit der Tatsache zusammenhängt, dass der Datenknoten nicht läuft.

Weiß jemand, was ich falsch gemacht habe oder wie ich dieses Problem beheben kann?

BEARBEITEN: Dies ist die Datei datanode.log:

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
************************************************************/
30
Aaron S

Der Fehler, den Sie im DN-Protokoll erhalten, wird hier beschrieben: http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-multi-node-cluster/#Java-io- ioexception-inkompatible-namespaceids

Von dieser Seite:

Momentan gibt es zwei Problemumgehungen, die unten beschrieben werden.

Abhilfemaßnahme 1: Von vorne beginnen

Ich kann bezeugen, dass die folgenden Schritte diesen Fehler beheben, aber die Nebenwirkungen machen Sie nicht glücklich (ich auch nicht). Der grobe Workaround, den ich gefunden habe, ist:

  1. Stoppen Sie den Cluster
  2. Löschen Sie das Datenverzeichnis auf dem problematischen DataNode: Das Verzeichnis wird von dfs.data.dir in conf/hdfs-site.xml angegeben. Wenn Sie diesem Lernprogramm gefolgt sind, lautet das entsprechende Verzeichnis/app/hadoop/tmp/dfs/data
  3. Formatieren Sie den NameNode neu (HINWEIS: Alle HDFS-Daten gehen während dieses Vorgangs verloren!)
  4. Starten Sie den Cluster erneut

Wenn das Löschen aller HDFS-Daten und das Starten bei Null nicht nach einer guten Idee klingt (beim ersten Setup/Testen ist dies möglicherweise in Ordnung), können Sie den zweiten Ansatz versuchen.

Problemumgehung 2: Aktualisieren der NamespaceID problematischer DataNodes

Vielen Dank an Jared Stehler für den folgenden Vorschlag. Ich habe es noch nicht selbst getestet, kann es aber gerne ausprobieren und schickt mir Ihr Feedback. Diese Problemumgehung ist "minimal invasiv", da Sie nur eine Datei auf den problematischen DataNodes bearbeiten müssen:

  1. Stoppen Sie den DataNode
  2. Bearbeiten Sie den Wert von namespaceID in/current/VERSION so, dass er dem Wert des aktuellen NameNode entspricht
  3. Starten Sie den DataNode neu

Wenn Sie die Anweisungen in meinen Lernprogrammen befolgt haben, lautet der vollständige Pfad der relevanten Dateien:

NameNode:/app/hadoop/tmp/dfs/name/aktuelle/VERSION 

DataNode:/app/hadoop/tmp/dfs/data/current/VERSION 

(Hintergrund: dfs.data.dir ist standardmäßig auf festgelegt 

$ {hadoop.tmp.dir}/dfs/data und wir haben hadoop.tmp.dir gesetzt 

in diesem Tutorial zu/app/hadoop/tmp).

Wenn Sie sich fragen, wie der Inhalt von VERSION aussieht, hier einer von mir:

# Inhalt von/current/VERSION 

namespaceID = 393514426 

storageID = DS-1706792599-10.10.10.1-50010-1204306713481

cTime = 1215607609074 

storageType = DATA_NODE 

layoutVersion = -13

47
Chris Shain

Okay, ich poste das noch einmal:

Für den Fall, dass jemand dies benötigt, für eine neuere Version von Hadoop (im Grunde verwende ich 2.4.0)

  • In diesem Fall stoppen Sie den Cluster sbin/stop-all.sh

  • Gehen Sie dann zu /etc/hadoop für Konfigurationsdateien.

In der Datei: hdfs-site.xml Suchen Sie nach Verzeichnispfaden, die dfs.namenode.name.dir dfs.namenode.data.dir entsprechen

  • Löschen Sie beide Verzeichnisse rekursiv (rm -r).

  • Formatieren Sie nun den Namen mit bin/hadoop namenode -format

  • Und schließlich sbin/start-all.sh

Hoffe das hilft.

11
apurva.nandan

Ich hatte das gleiche Problem mit dem Pseudo-Knoten mit hadoop1.1.2So. Ich habe bin/stop-all.sh ausgeführt, um den Cluster anzuhalten Dann sah ich die Konfiguration meines hadoop tmp-Verzeichnisses in hdfs-site.xml

<name>hadoop.tmp.dir</name>
<value>/root/data/hdfstmp</value>

Also ging ich in/root/data/hdfstmp und löschte alle Dateien mit dem Befehl (Sie könnten Ihre Daten verlieren)

rm -rf *

und formatieren Sie dann erneut namenode

bin/hadoop namenode -format

und starten Sie den Cluster mit 

bin/start-all.sh

Hauptgrund ist, dass bin/hadoop namenode -format die alten Daten nicht entfernt hat. Wir müssen es also manuell löschen.

7
user2580337

Führen Sie folgende Schritte aus:

1. bin/stop-all.sh
2. remove dfs/ and mapred/ folder of hadoop.tmp.dir in core-site.xml
3. bin/hadoop namenode -format
4. bin/start-all.sh
5. jps
5
Somnath Kadam

Formatieren Sie Ihren Datanode und starten Sie ihn erneut.

2

Ich habe CDH4 als meine Version von hadoop verwendet und hatte Probleme bei der Konfiguration. Selbst nach dem Versuch, meinen Namenknoten neu zu formatieren, wurde der Fehler immer noch angezeigt.

Meine VERSION-Datei befand sich in

/var/lib/hadoop-hdfs/cache/{username}/dfs/data/current/VERSION

Sie finden den Speicherort des HDFS-Cache-Verzeichnisses, indem Sie nach der Eigenschaft hadoop.tmp.dir suchen: 

more /etc/hadoop/conf/hdfs-site.xml 

Ich habe das gefunden, indem ich es tat

cd /var/lib/hadoop-hdfs/cache/
rm -rf *

und dann den namenode neu formatiert, konnte ich das Problem endlich beheben. Dank der ersten Antwort, die mir geholfen hat, herauszufinden, welchen Ordner ich bombardieren musste.

Ich habe es mit dem von Jared Stehler in der Antwort von Chris Shain vorgeschlagenen Ansatz 2 versucht, und ich kann bestätigen, dass ich nach diesen Änderungen das oben genannte Problem lösen konnte.

Ich habe die gleiche Versionsnummer sowohl für die Name- als auch für die Datenversionsdatei verwendet. Das heißt, die Versionsnummer wurde aus der Datei VERSION (/ app/hadoop/tmp/dfs/name/current) in die VERSION (/ app/hadoop/tmp/dfs/data/current) kopiert und es funktionierte wie charmant

Prost !

2
saurav

Dieses Problem ist aufgetreten, wenn Sie einen nicht geänderten Cloudera-Schnellstart vm 4.4.0-1 verwenden

Zu Referenzzwecken sagte der Cloudera-Manager, dass sich mein Datanode in gutem Zustand befand, obwohl in der Fehlermeldung im DataStreamer-Stacktrace keine Datanodes ausgeführt wurden.

kredit geht an Workaround Nr. 2 von https://stackoverflow.com/a/10110369/249538 , aber ich werde meine spezifischen Erfahrungen mit der Cloudera-Schnellstart-VM erläutern.

Konkret habe ich gemacht:
Beenden Sie in dieser Reihenfolge die Dienste hue1, Hive1, mapreduce1, hdfs1 über den Cloudera-Manager http: //localhost.localdomain: 7180/cmf/services/status

fand meine VERSION-Dateien über:
Sudo find / -name VERSION 

ich habe: 

/dfs/dn/current/BP-780931682-127.0.0.1-1381159027878/current/VERSION
/dfs/dn/current/VERSION
/dfs/nn/current/VERSION
/dfs/snn/current/VERSION

ich habe den Inhalt dieser Dateien geprüft, aber sie hatten alle ein entsprechendes namespaceID, mit der Ausnahme, dass eine Datei sie völlig vermisst hat. Also habe ich einen Eintrag hinzugefügt.

dann habe ich die Dienste in umgekehrter Reihenfolge über den Cloudera-Manager neu gestartet. jetzt kann ich -put auf hdfs packen.

1
goat

In meinem Fall habe ich fälschlicherweise ein Ziel für dfs.name.dir und dfs.data.dir festgelegt. Das richtige Format ist

 <property>
 <name>dfs.name.dir</name>
 <value>/path/to/name</value>
 </property>

 <property>
 <name>dfs.data.dir</name>
 <value>/path/to/data</value>
 </property>
0
mahmood

Ich habe das gleiche Problem, dass datanode fehlt Und ich folge diesem Schritt, der für mich funktioniert hat

1. Suchen Sie den Ordner, in dem sich datanode in .cd hadoop/hadoopdata/hdfs 2.look befindet, und Sie sehen, welche Datei Sie in hdfs ls haben 3.löschen Sie den datanode-Ordner, da es sich um eine alte Version von datanode handelt rm -rf/datanode/* 4. Sie erhalten die neue Version, nachdem Sie den vorherigen Befehl ausgeführt haben 5. neuen datanode starten hadoop-daemon.sh start datanode 6. Aktualisieren Sie die Webdienste. Sie sehen, dass der verlorene Knoten angezeigt wird mein Terminal

0
Aey Varistha