Hadoop HDFS - Keine Verbindung zum port auf dem master
Habe ich einen kleinen Hadoop cluster für den Test. Aufbau ging Recht gut mit dem NameNode (1 Maschine), SecondaryNameNode (1) und alle DataNodes (3). Die Maschine mit dem Namen "master", "secondary" und "data01", "data02" und "data03". Alle DNS korrekt eingerichtet sind, und SSH ohne Passwort konfiguriert wurde vom master/secondary für alle Maschinen-und Rückseite.
Formatierte ich den cluster mit bin/hadoop namenode -format
, und begann dann, alle Dienste mit bin/start-all.sh
. Alle Prozesse auf allen Knoten geprüft wurden zu sein und läuft mit jps
. Meine grundlegende Konfigurations-Dateien wie folgt Aussehen:
<!-- conf/core-site.xml -->
<configuration>
<property>
<name>fs.default.name</name>
<!--
on the master it's localhost
on the others it's the master's DNS
(ping works from everywhere)
-->
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<!-- I picked /hdfs for the root FS -->
<value>/hdfs/tmp</value>
</property>
</configuration>
<!-- conf/hdfs-site.xml -->
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/hdfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/hdfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
</configuration>
# conf/masters
secondary
# conf/slaves
data01
data02
data03
Ich versuche nur zu HDFS läuft jetzt richtig.
Habe ich dir zum testen hadoop fs -mkdir testing
versuchte dann kopieren Sie einige Dateien in es mit hadoop fs -copyFromLocal /tmp/*.txt testing
. Dies ist, wenn die hadoop-Abstürze, die mir mehr oder weniger diese:
WARN hdfs.DFSClient: DataStreamer Exception: org.apache.hadoop.ipc.RemoteException: java.io.IOException: File /user/hd/testing/wordcount1.txt could only be replicated to 0 nodes, instead of 1
at ... (such and such)
WARN hdfs.DFSClient: Error Recovery for block null bad datanode[0] nodes == null
at ...
WARN hdfs.DFSClient: Could not get block locations. Source file "/user/hd/testing/wordcount1.txt" - Aborting...
at ...
ERROR hdfs.DFSClient: Exception closing file /user/hd/testing/wordcount1.txt: org.apache.hadoop.ipc.RemoteException: java.io.IOException: File /user/hd/testing/wordcount1.txt could only be replicated to 0 nodes, instead of 1
at ...
Und so weiter. Ein ähnliches Problem tritt auf, wenn ich versuche zu laufen hadoop fs -lsr .
von einem DataNode-Maschine, nur um das folgende:
12/01/02 10:02:11 INFO ipc.Client: Retrying connt to server master/192.162.10.10:9000. Already tried 0 time(s).
12/01/02 10:02:12 INFO ipc.Client: Retrying connt to server master/192.162.10.10:9000. Already tried 1 time(s).
12/01/02 10:02:13 INFO ipc.Client: Retrying connt to server master/192.162.10.10:9000. Already tried 2 time(s).
...
Ich sage, es ist ähnlich, weil ich vermute, das ist ein port Problem mit der Verfügbarkeit. Läuft telnet master 9000
zeigt, dass der port geschlossen ist. Ich habe irgendwo gelesen, dass dies möglicherweise eine IPv6-clash-Problem, und somit definiert die folgenden in conf/hadoop-env.sh:
export HADOOP_OPTS=-Djava.net.preferIPv4Stack=true
Aber das hat nicht den trick tun. Läuft netstat
auf der master zeigt so etwas wie dies:
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 localhost:9000 localhost:56387 ESTABLISHED
tcp 0 0 localhost:56386 localhost:9000 TIME_WAIT
tcp 0 0 localhost:56387 localhost:9000 ESTABLISHED
tcp 0 0 localhost:56384 localhost:9000 TIME_WAIT
tcp 0 0 localhost:56385 localhost:9000 TIME_WAIT
tcp 0 0 localhost:56383 localhost:9000 TIME_WAIT
In diesem Punkt bin ich ziemlich sicher, dass das problem mit dem port (9000), aber ich bin mir nicht sicher, was ich verpasst habe, soweit Konfiguration geht. Irgendwelche Ideen? Danke.
update
Fand ich, dass die hartcodierung von DNS-Namen in /etc/hosts
helfen nicht nur beheben, sondern beschleunigt auch die verbindungen. Der Nachteil ist, dass Sie müssen dies tun, auf allen Maschinen im cluster, und wieder, wenn Sie das hinzufügen neuer Knoten. Oder Sie können einfach legen Sie einen DNS-server, das habe ich nicht.
Hier ist ein Beispiel meiner einen Knoten in meinem cluster (Knoten namens hadoop01
, hadoop02
usw., mit master-und Sekundarstufe wird 01 und 02). Knoten, die meisten davon werden durch die OS:
# this is a sample for a machine with dns hadoop01
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastrprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allroutes
# --- Start list of nodes
192.168.10.101 hadoop01
192.168.10.102 hadoop02
192.168.10.103 hadoop03
192.168.10.104 hadoop04
192.168.10.105 hadoop05
192.168.10.106 hadoop06
192.168.10.107 hadoop07
192.168.10.108 hadoop08
192.168.10.109 hadoop09
192.168.10.110 hadoop10
# ... and so on
# --- End list of nodes
# Auto-generated hostname. Please do not remove this comment.
127.0.0.1 hadoop01 localhost localhost.localdomain
Hoffe, das hilft.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ersetzen Sie localhost in hdfs://localhost:9000 mit ip-Adresse oder den Hostnamen für den fs.Standard.name-Eigenschaft in NameNode, wenn es remote-Knoten verbinden, um den NameNode.
Könnte es einige Fehler in den log-Dateien. jps stellt sicher, dass der Prozess ausgeführt wird.
hadoop01
als alias für die volle IP und localhost? Gibt es Vorteile von dieser Konfiguration?hadoop jar /usr/share/hadoop/hadoop-examples-*.jar grep input output 'dfs[a-z.]+'
) vielen Dank!Korrigieren Sie Ihre /etc/hosts-Datei enthalten localhost oder korrigieren Sie Ihre core-site-Datei angeben, die ip oder der hostname des Knotens, der Gastgeber HDFS Dateisystem.
127.0.1.1 ubuntu01
(ubuntu01 ist auf meiner Clusters datanode). also, wenn Sie diese Einstellung verwenden, um zu starten namenode, kann es nicht hören, andere ip aus einem anderen datanode.