wake-up-neo.com

Das Schreiben in HDFS konnte nur auf Knoten anstelle von minReplication (= 1) repliziert werden.

Ich habe 3 Datenknoten, die ausgeführt werden, während ein Job ausgeführt wird. Ich erhalte den folgenden Fehler,

Java.io.IOException: Datei/user/ashsshar/olhcache/loaderMap9b663bd9 konnte nur auf 0 Knoten anstelle von minReplication (= 1) repliziert werden. Es werden 3 Datenknoten ausgeführt, und 3 Knoten werden in dieser Operation ausgeschlossen . at org.Apache.hadoop.hdfs.server.blockmanagement.BlockManager.chooseTarget (BlockManager.Java:1325)

Dieser Fehler tritt hauptsächlich dann auf, wenn den DataNode-Instanzen nicht mehr genügend Speicherplatz zur Verfügung steht oder wenn DataNodes nicht ausgeführt wird .. Ich habe versucht, die DataNodes neu zu starten, aber immer noch den gleichen Fehler zu erhalten.

dfsadmin -reports an meinen Clusterknoten zeigt eindeutig, dass viel Speicherplatz zur Verfügung steht.

Ich bin nicht sicher, warum das so ist.

22
Ashish Sharma

1.Stoppe alle Hadoop-Dämonen 

for x in `cd /etc/init.d ; ls hadoop*` ; do Sudo service $x stop ; done

2.Entfernen Sie alle Dateien von /var/lib/hadoop-hdfs/cache/hdfs/dfs/name 

Eg: [email protected]:~$ Sudo rm -r /var/lib/hadoop-hdfs/cache/

3.Format Namenode

Sudo -u hdfs hdfs namenode -format

4.Starten Sie alle Hadoop-Daemons

for x in `cd /etc/init.d ; ls hadoop*` ; do Sudo service $x start ; done

Stoppen Sie alle Hadoop-Dienste

15
Devan M S

Ich hatte das gleiche Problem, ich hatte sehr wenig Speicherplatz. Die Freigabe der Festplatte hat es gelöst.

11
divyaravi
  1. Prüfen Sie, ob Ihr DataNode ausgeführt wird, und verwenden Sie den Befehl: jps.
  2. Wenn es nicht läuft warten Sie irgendwann und versuchen Sie es erneut.
  3. Wenn es ausgeführt wird , denke ich, müssen Sie Ihren DataNode neu formatieren.
2
twlkyao

Normalerweise mache ich in diesem Fall das Verzeichnis tmp/hadoop-username/dfs/und lösche die Ordner data und name manuell (vorausgesetzt, Sie arbeiten in einer Linux-Umgebung.) ).

Formatieren Sie dann die dfs durch Aufruf von bin/hadoop namenode -format (stellen Sie sicher, dass Sie mit einem GroßbuchstabenYantworten, wenn Sie gefragt werden, ob Sie formatieren möchten; wenn Sie nicht gefragt werden, dann sind Sie hier (Befehl erneut ausführen).

Sie können hadoop dann erneut starten, indem Sie bin/start-all.sh aufrufen.

1
lvella

Sehr einfaches Update für dasselbe Problem unter Windows 8.1
Ich habe Windows 8.1 und Hadoop 2.7.2 verwendet.

  1. Als ich das hdfs namenode -format startete, bemerkte ich, dass mein Verzeichnis gesperrt ist. Bitte beziehen Sie sich auf die Abbildung unten.
     HadoopNameNode
  2. Sobald ich den vollständigen Ordner gelöscht habe, wie unten gezeigt, und wieder das hdfs-Namenode-Format. Folder location
     Full Folder Delete
  3. Nachdem ich die beiden oben genannten Schritte ausgeführt hatte, konnte ich meine erforderlichen Dateien erfolgreich im HDFS-System ablegen. Ich habe den Befehl start-all.cmd verwendet, um Garn und Namenode zu starten.
0

In meinem Fall wurde dieses Problem gelöst, indem der Firewall-Port 50010 auf den Datanodes geöffnet wurde.

0
fracca

Ich hatte dieses Problem und habe es wie folgt gelöst:

  1. Finden Sie heraus, wo Ihre Metadaten/Daten von Daten- und Namensnamen gespeichert sind. Wenn Sie es nicht finden können, führen Sie einfach diesen Befehl auf Mac aus, um es zu finden (es befindet sich in einem Ordner mit dem Namen "tmp").

    find/usr/local/Cellar/-name "tmp"; 

    der Befehl find lautet wie folgt: find <"verzeichnis"> -name <"ein beliebiger Anhaltspunkt für dieses Verzeichnis oder diese Datei">

  2. Nachdem Sie diese Datei gefunden haben, cd hineinlegen ./Usr/local/Cellar // hadoop/hdfs/tmp

    dann cd zu dfs

    dann mit dem Befehl -ls sehen, dass sich dort die Daten- und Namensverzeichnisse befinden.

  3. Mit dem Befehl remove entfernen Sie beide:

    rm -R Daten. und rm -R name

  4. Gehen Sie in den Bin-Ordner und beenden Sie alles, wenn Sie es noch nicht getan haben:

    sbin/end-dfs.sh

  5. Beenden Sie den Server oder Localhost.

  6. Melden Sie sich erneut beim Server an: ssh <"Servername">

  7. starte die dfs:

    sbin/start-dfs.sh

  8. Formatieren Sie den Namen-Namen, um sicher zu gehen:

    bin/hdfs namenode -format

  9. sie können jetzt hdfs-Befehle verwenden, um Ihre Daten in dfs hochzuladen und MapReduce-Jobs auszuführen.

0
Reihan_amn