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.
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
Ich hatte das gleiche Problem, ich hatte sehr wenig Speicherplatz. Die Freigabe der Festplatte hat es gelöst.
jps
.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.
Sehr einfaches Update für dasselbe Problem unter Windows 8.1
Ich habe Windows 8.1 und Hadoop 2.7.2 verwendet.
In meinem Fall wurde dieses Problem gelöst, indem der Firewall-Port 50010 auf den Datanodes geöffnet wurde.
Ich hatte dieses Problem und habe es wie folgt gelöst:
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">
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.
Mit dem Befehl remove entfernen Sie beide:
rm -R Daten. und rm -R name
Gehen Sie in den Bin-Ordner und beenden Sie alles, wenn Sie es noch nicht getan haben:
sbin/end-dfs.sh
Beenden Sie den Server oder Localhost.
Melden Sie sich erneut beim Server an: ssh <"Servername">
starte die dfs:
sbin/start-dfs.sh
Formatieren Sie den Namen-Namen, um sicher zu gehen:
bin/hdfs namenode -format
sie können jetzt hdfs-Befehle verwenden, um Ihre Daten in dfs hochzuladen und MapReduce-Jobs auszuführen.