Es werden 0 Datenknoten ausgeführt, und bei dieser Operation werden keine Knoten ausgeschlossen

9

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?

    
Learner 24.10.2014, 09:47
quelle

8 Antworten

11

Zwei Dinge haben für mich funktioniert,

SCHRITT 1: hadoop stoppen und temporäre Dateien von hduser löschen

%Vor%

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

%Vor%

SCHRITT 2: format namenode

%Vor%

Jetzt kann ich DataNode

sehen %Vor%     
prayagupd 01.05.2015 03:58
quelle
5

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

    
Tamilkumaran S 24.01.2016 05:51
quelle
4

@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.

    
kishorer747 30.10.2014 17:40
quelle
1

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%     
mustafacanturk 08.01.2017 19:50
quelle
0

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

  
    
rajat 25.01.2016 04:22
quelle
0

Ich hatte denselben Fehler. Ich hatte keine Erlaubnis zu hdfs Dateisystem. Also gebe ich meinem Benutzer die Erlaubnis:

%Vor%     
Halil İbrahim Oymacı 03.06.2017 16:13
quelle
0

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.

    
Prabhat Swami 23.10.2017 20:03
quelle
-1

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 werden

Ich hoffe, das sollte funktionieren !!!

    
Javaid Mir 09.02.2018 11:21
quelle