Daten-Replikation Fehler in Hadoop
Ich die Umsetzung der Hadoop Single-Node-Cluster auf meinem Rechner, indem Sie die folgenden Michael Noll-tutorial und kommen über Daten-Replikation-Fehler:
Hier die komplette Fehlermeldung:
> hadoop@laptop:~/hadoop$ bin/hadoop dfs -copyFromLocal > tmp/testfiles testfiles > > 12/05/04 16:18:41 WARN hdfs.DFSClient: DataStreamer Exception: > org.apache.hadoop.ipc.RemoteException: java.io.IOException: File > /user/hadoop/testfiles/testfiles/file1.txt could only be replicated to > 0 nodes, instead of 1 at > org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:1271) > at > org.apache.hadoop.hdfs.server.namenode.NameNode.addBlock(NameNode.java:422) > at sun.reflect.GeneratedMethodAccessor7.invoke(Unknown Source) at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:597) at > org.apache.hadoop.ipc.RPC$Server.call(RPC.java:508) at > org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:959) at > org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:955) at > java.security.AccessController.doPrivileged(Native Method) at > javax.security.auth.Subject.doAs(Subject.java:396) at > org.apache.hadoop.ipc.Server$Handler.run(Server.java:953) > > at org.apache.hadoop.ipc.Client.call(Client.java:740) at > org.apache.hadoop.ipc.RPC$Invoker.invoke(RPC.java:220) at > $Proxy0.addBlock(Unknown Source) at > sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:597) at > org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:82) > at > org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:59) > at $Proxy0.addBlock(Unknown Source) at > org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.locateFollowingBlock(DFSClient.java:2937) > at > org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.nextBlockOutputStream(DFSClient.java:2819) > at > org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.access$2000(DFSClient.java:2102) > at > org.apache.hadoop.hdfs.DFSClient$DFSOutputStream$DataStreamer.run(DFSClient.java:2288) > > 12/05/04 16:18:41 WARN hdfs.DFSClient: Error Recovery for block null > bad datanode[0] nodes == null 12/05/04 16:18:41 WARN hdfs.DFSClient: > Could not get block locations. Source file > "/user/hadoop/testfiles/testfiles/file1.txt" - Aborting... > copyFromLocal: java.io.IOException: File > /user/hadoop/testfiles/testfiles/file1.txt could only be replicated to > 0 nodes, instead of 1 12/05/04 16:18:41 ERROR hdfs.DFSClient: > Exception closing file /user/hadoop/testfiles/testfiles/file1.txt : > org.apache.hadoop.ipc.RemoteException: java.io.IOException: File > /user/hadoop/testfiles/testfiles/file1.txt could only be replicated to > 0 nodes, instead of 1 at > org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:1271) > at > org.apache.hadoop.hdfs.server.namenode.NameNode.addBlock(NameNode.java:422) > at sun.reflect.GeneratedMethodAccessor7.invoke(Unknown Source) at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:597) at > org.apache.hadoop.ipc.RPC$Server.call(RPC.java:508) at > org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:959) at > org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:955) at > java.security.AccessController.doPrivileged(Native Method) at > javax.security.auth.Subject.doAs(Subject.java:396) at > org.apache.hadoop.ipc.Server$Handler.run(Server.java:953) > > org.apache.hadoop.ipc.RemoteException: java.io.IOException: File > /user/hadoop/testfiles/testfiles/file1.txt could only be replicated to > 0 nodes, instead of 1 at > org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:1271) > at > org.apache.hadoop.hdfs.server.namenode.NameNode.addBlock(NameNode.java:422) > at sun.reflect.GeneratedMethodAccessor7.invoke(Unknown Source) at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:597) at > org.apache.hadoop.ipc.RPC$Server.call(RPC.java:508) at > org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:959) at > org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:955) at > java.security.AccessController.doPrivileged(Native Method) at > javax.security.auth.Subject.doAs(Subject.java:396) at > org.apache.hadoop.ipc.Server$Handler.run(Server.java:953) > > at org.apache.hadoop.ipc.Client.call(Client.java:740) at > org.apache.hadoop.ipc.RPC$Invoker.invoke(RPC.java:220) at > $Proxy0.addBlock(Unknown Source) at > sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:597) at > org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:82) > at > org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:59) > at $Proxy0.addBlock(Unknown Source) at > org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.locateFollowingBlock(DFSClient.java:2937) > at > org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.nextBlockOutputStream(DFSClient.java:2819) > at > org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.access$2000(DFSClient.java:2102) > at > org.apache.hadoop.hdfs.DFSClient$DFSOutputStream$DataStreamer.run(DFSClient.java:2288)
Auch wenn ich ausführen:
bin/stop-all.sh
Er sagt, dass datanode nicht gestartet wurde und somit nicht beendet werden können. Obwohl, der Ausgang des jps sagt der datanode.
Versuchte ich Formatierung der namenodewechselnden Besitzer Berechtigungenaber es scheint nicht zu funktionieren. Hoffe, dass ich nicht verpassen alle anderen relevanten Informationen.
Vielen Dank im Voraus.
InformationsquelleAutor der Frage Apoorv Saxena | 2012-05-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Lösung, die für mich gearbeitet wurde ausgeführt namenode und datanode nacheinander und nicht zusammen mit
bin/start-all.sh
. Was passiert mit diesem Ansatz ist, dass der Fehler ist deutlich sichtbar, wenn Sie mit einigen problem die Einstellung der datanodes auf das Netzwerk und auch viele Beiträge auf stackoverflow vorschlagen, dass namenode einige Zeit benötigt, um start-off, daher sollte es gegeben sein, einige Zeit zu starten, bevor die datanodes. Auch in diesem Fall hatte ich problem mit verschiedenen ids von namenode und datanodes, für die musste ich die ids der datanode mit der gleichen id wie der namenode.Die Schritt für Schritt-Verfahren:
bin/hadoop namenode
. Überprüfen Sie für Fehler, wenn vorhanden.bin/hadoop datanode
. Überprüfen Sie für Fehler, wenn vorhanden.InformationsquelleAutor der Antwort Apoorv Saxena
Blick auf Ihre namenode (wahrscheinlich http://localhost:50070) und sehen, wie viele datanodes es sagt, Sie haben.
Wenn es 0 ist, dann ist entweder Ihre datanode nicht läuft oder es nicht konfiguriert ist, um eine Verbindung zu den namenode.
Wenn es 1 ist, überprüfen, um zu sehen, wie viel freien Speicherplatz es sagt, es ist in der DFS. Kann es sein, dass die Daten der Knoten nicht überall, es kann das schreiben von Daten auf (data-dir nicht vorhanden ist, oder nicht über Schreibzugriff).
InformationsquelleAutor der Antwort Eddie Money
Zwar gelöst, ich bin das hinzufügen dieser für zukünftige Leser. Cody Rat der Inspektion der start von namenode und datanode nützlich war, und eine weitere Untersuchung führte mich zu löschen, die die hadoop-store/dfs-Verzeichnis. Tun dies löste dieser Fehler für mich.
InformationsquelleAutor der Antwort Mike
Ich hatte das gleiche problem, ich habe einen Blick auf die datanode-Protokolle, und es war eine Warnung, die sagen, dass die dfs.Daten.dir hatten falsche Berechtigungen... also habe ich einfach geändert und alles funktioniert, das ist irgendwie komisch.
Genauer zu sein, mein "dfs.Daten.dir" auf "/home/hadoop/hd_tmp", und die Fehler, die ich bekam, war:
Also habe ich einfach diese Befehle ausgeführt:
Dann alles geklappt hat.
InformationsquelleAutor der Antwort cacol89
In meinem Fall habe ich Unrecht, setzen sich ein Ziel für
dfs.name.dir
unddfs.data.dir
. Das richtige format istInformationsquelleAutor der Antwort mahmood
Entfernte ich die zusätzlichen Eigenschaften in der hdfs-site.xml und dann ist dieses Problem Weg war. Hadoop muss verbessert werden, auf deren Fehlermeldungen. Ich habe versucht, jede der oben genannten Lösungen und keine gearbeitet.
InformationsquelleAutor der Antwort killjoy
Ich hatte das gleiche problem. Als ich sah localhost:50070unter den cluster-Zusammenfassung, alle Eigenschaften wurden mit 0 ausgewiesen, mit Ausnahme der "DFS Verwendet eine 100%". In der Regel ist diese situation auftreten, weil es einige Fehler in den drei *-site.xml Dateien unter HADOOP_INSTALL/conf und hosts-Datei.
In meinem Fall, die Ursache ist nicht zu beheben, der hostname. Ich löste das problem, indem Sie einfach "hostname IP_Address" /etc/hosts.
InformationsquelleAutor der Antwort leodream
In meinem Fall musste ich löschen:
/tmp/hadoop-<user-name>
Ordner und das format und starten Sie mitsbin/start-dfs.sh
sbin/start-yarn.sh
InformationsquelleAutor der Antwort swapna