Ich habe einen Hadoop Cluster mit mehreren Knoten eingerichtet. Der Namennode NameNode und Seconaday läuft auf demselben Rechner und der Cluster hat nur einen Datanode. Alle Knoten sind auf Amazon EC2-Maschinen konfiguriert.
Nachfolgend finden Sie die Konfigurationsdateien auf dem Master-Knoten
%Vor%Jetzt sind die Konfigurationsdateien auf dem Datenknoten
%Vor%mapred-site.xml
%Vor%hdfs-site.xml
%Vor%Die jps laufen auf dem Namenode geben folgendes 5696 NameNode 6504 Jps 5905 SecondaryNameNode 6040 ResourceManager
und jps auf Datenknoten 2883 Datenknoten 3496 Jps 3381 NodeManager
was mir richtig erscheint.
Wenn ich jetzt versuche, einen Put-Befehl auszuführen: hadoop fs -put count_inputfile / test / eingabe /
es gibt mir den folgenden Fehler: put: Datei / count_inputfile. COPYING konnte nur auf 0 Knoten anstelle von minReplication (= 1) repliziert werden. Es laufen 0 Datenknoten, und bei dieser Operation werden keine Knoten ausgeschlossen.
Die Protokolle auf dem Datenknoten sagt folgendes
%Vor%Garn-Knotenmanager-Protokoll INFO org.apache.hadoop.ipc.Client: Erneut versuchen, eine Verbindung zum Server herzustellen: 0.0.0.0/0.0.0.0:8031. Bereits 9 Mal (s) probiert; Wiederholungsrichtlinie ist RetryUpToMaximumCountWithFixedSleep (maxRetries = 10, sleepTime = 1000 MILLISECONDS)
Die Web-Benutzeroberfläche des Knoten-Managers (50070) zeigt, dass es 0 Live-Knoten und 0 tote Knoten gibt und der verwendete dfs ist 100%
Ich habe auch IPV6 deaktiviert. Auf einigen Webseiten fand ich heraus, dass ich auch die Datei / etc / hosts bearbeiten sollte Ich habe sie auch bearbeitet und sie sehen so aus 127.0.0.1 localhost 172.31.25.151 ip-172-31-25-151.us-west-2.compute.internal 172.31.25.152 ip-172-31-25-152.us-west-2.compute.internal
Warum bekomme ich den Fehler immer noch?
Zwei Dinge haben für mich funktioniert,
SCHRITT 1: hadoop stoppen und temporäre Dateien von hduser
löschen
Außerdem müssen Sie möglicherweise löschen und neu erstellen /app/hadoop/tmp
( meistens, wenn ich die Hadoop-Version von 2.2.0
in 2.7.0
) ändere
SCHRITT 2: format namenode
%Vor%Jetzt kann ich DataNode
sehen %Vor%Ich hatte das gleiche Problem nach dem unpassenden Herunterfahren des Knotens. Auch in der Benutzeroberfläche ist der Datenknoten nicht aufgeführt.
Jetzt funktioniert es nach dem Löschen der Dateien aus dem Datenknoten-Ordner und dem Neustart von Diensten.
stop-all.sh
rm -rf / usr / lokal / hadoop_store / hdfs / datanode / *
start-all.sh
@Learner,
Ich hatte dieses Problem von Daten, die nicht in der Weboberfläche von Namenode angezeigt werden. Es wurde mit diesen Schritten in Hadoop 2.4.1 gelöst.
dies für alle Knoten (Master und Slaves) tun
1. entferne alle temporären Dateien (standardmäßig in / tmp) - sudo rm -R /tmp/*
.
2. Versuchen Sie nun die Verbindung zu allen Knoten über ssh
herzustellen, indem Sie ssh username@host
verwenden und Schlüssel in Ihrem Master hinzufügen, indem Sie ssh-copy-id -i ~/.ssh/id_rsa.pub username@host
verwenden, um uneingeschränkten Zugriff von Slaves auf den Master zu gewähren (dies könnte jedoch das Problem sein, Verbindungen abzuweisen).
3. Formatieren Sie den Namen mit hadoop namenode -format
und starten Sie die Daemons neu.
In meiner Situation lief der Firewall-Dienst. Es war auf Standardkonfiguration. Und es erlaubt nicht die Kommunikation zwischen Knoten. Mein Hadoop-Cluster war ein Testcluster. Aus diesem Grund habe ich den Dienst eingestellt. Wenn Ihre Server in Produktion sind, sollten Sie Hadoop-Ports auf Firewall anstelle von
zulassen %Vor%Wahrscheinlich liegt dies daran, dass die Cluster-ID der Datenknoten und die Namenknoten oder der Knotenmanager nicht übereinstimmen. Die Cluster-ID kann in der VERSION-Datei gefunden werden, die sowohl in den Namenknoten als auch in den Datenknoten gefunden wird.
Dies passiert, wenn Sie Ihren Namenscode formatieren und dann den Cluster neu starten, aber die Datenknoten versuchen immer noch, die Verbindung mit der vorherigen clusterID herzustellen. Um erfolgreich verbunden zu sein, benötigen Sie die richtige IP-Adresse und auch eine passende Cluster-ID auf den Knoten.
Versuchen Sie also, den Namenknoten und die Datenknoten neu zu formatieren, oder konfigurieren Sie einfach die Datenknoten und den Namenscode in neu erstellten Ordnern.
Das sollte dein Problem lösen.
Das Löschen der Dateien aus dem aktuellen Datenordnern-Ordner wird auch die alte VERSION-Datei entfernen und nach einer neuen VERSION-Datei verlangen, während die Verbindung mit dem Namen-Knoten wiederhergestellt wird.
Beispiel Ihr Datanode-Verzeichnis in der Konfiguration ist / hadoop2 / datanode
%Vor%Und dann starten Sie die Dienste neu Wenn Sie Ihren Namenscode neu formatieren, tun Sie dies vor diesem Schritt. Jedes Mal, wenn Sie Ihren Namensknoten neu formatieren, erhält er eine neue ID und diese ID wird zufällig generiert und stimmt nicht mit der alten ID in Ihren Daten überein.
Also folge immer dieser Sequenz
wenn Sie nomenode formatieren Löschen Sie dann den Inhalt des Datenknotenverzeichnisses ODER konfigurieren Sie den Datenknoten im neu erstellten Verzeichnis Dann starte deinen namenode und die Datanodes
Ich hatte denselben Fehler. Ich hatte keine Erlaubnis zu hdfs Dateisystem. Also gebe ich meinem Benutzer die Erlaubnis:
%Vor%Der Wert für die Eigenschaft {fs.default.name} in core-site.xml muss sowohl auf dem Master- als auch auf dem Slave-Computer auf den Mastercomputer verweisen. So wird es etwa so sein:
%Vor%Dabei ist Master der Hostname in der Datei / etc / hosts, der auf den Master-Knoten verweist.
1) Stoppen Sie zuerst alle Dienste mit dem Befehl stop-all.sh
2) Löschen Sie alle Dateien im Datenknoten rm -rf / usr / lokal / hadoop_store / hdfs / datanode / *
3) Starten Sie dann alle Dienste mit dem Befehl start-all.sh
Sie können überprüfen, ob alle Ihre Dienste mit dem Befehl jps
ausgeführt werdenIch hoffe, das sollte funktionieren !!!
Tags und Links hadoop ubuntu hdfs amazon-ec2 hadoop2