2016-09-29 6 views
2

Ich stehe mit meinem Cluster vor einem wirklich seltsamen Problem.Dateien, die größer als 100 MB sind, können nicht in HDFS geladen werden

Jedes Mal, wenn ich versuche, jede Datei in HDFS zu laden, die größer als 100 MB (104.857.600 Bytes) es mit dem folgenden Fehler fehlschlägt ist:

All datanodes are bad... Aborting.

Das ist wirklich seltsam, wie 100 MB die Schwelle geworden ist für Dateigröße.

Auch wenn ich versuche, die Dateigröße um 1 einzelnes Byte (104857601 Bytes) zu erhöhen und versuchen, es in HDFS zu laden, schlägt es mit einem langen Stacktrace fehl. Grundsätzlich sagen "Alle Daten sind schlecht ... Abbrechen"

Hat jemand ähnliche Situation früher konfrontiert?

Ist es möglich, dass einige Konfigurationsänderungen versehentlich zu diesem Verhalten geführt haben? Wenn ja, irgendeine Konfiguration, die die Größe der Daten begrenzt, die aufgenommen werden können, die ich ändern kann?

Dank

+0

Nur um zu verdeutlichen: Können Sie mehrere Dateien von 51 mb laden? Wie lädst du es ein und scheitert es sofort oder gegen Ende? Gibt es eine Chance, dass Sie ein sehr niedriges Speicherlimit für Mapper festlegen? –

+0

Haben Sie Ihre Grenze für die Anzahl der geteilten Dateien und die maximale Anzahl geöffneter Dateien überprüft? – mbaxi

+0

@Dennis - Ich kann alles unter 100 MB laden. Laden mit Hadoop fs -put. Es schlägt sofort fehl. Ich bin mir nicht sicher, wie ich nach dem Speicherlimit suchen soll. Bitte klären Sie das Gleiche. –

Antwort

2

"Hat jemand früher ähnliche Situation konfrontiert?"

Ja hatte ich. Sie sollten das Limit für den Benutzer, der Hadoop ausführt, verringern. Ich habe Hadoop auf einer Linux-Box installiert und es von der Apache-Website heruntergeladen, und mein System wurde nicht darauf abgestimmt. Ich habe Ihre Nachricht erhalten. Dies sind die Einstellungen von cloudera quick start, vergleichen Sie Ihr Limit mit diesen.

[[email protected] ~]$ ulimit -a 
core file size   (blocks, -c) 0 
data seg size   (kbytes, -d) unlimited 
scheduling priority    (-e) 0 
file size    (blocks, -f) unlimited 
pending signals     (-i) 30494 
max locked memory  (kbytes, -l) 64 
max memory size   (kbytes, -m) unlimited 
open files      (-n) 1024 
pipe size   (512 bytes, -p) 8 
POSIX message queues  (bytes, -q) 819200 
real-time priority    (-r) 0 
stack size    (kbytes, -s) 10240 
cpu time    (seconds, -t) unlimited 
max user processes    (-u) 1024 
virtual memory   (kbytes, -v) unlimited 
file locks      (-x) unlimited 
+0

Danke. Ich habe das herausgefunden, bevor deine Antwort kam, aber das wird sicherlich anderen helfen. –

+0

@MeghVidani welche Änderungen hast du gemacht? – red

+0

@red Ich habe die Datei /etc/security/limits.conf bearbeitet und die Begrenzung der Dateigröße auf unlimited gesetzt. Früher wurde es auf 102400 KB (100 MB) eingestellt. –

0

Wenn der Sie weitere Details des Datenknoten aus dem Stack-Trace zu erhalten, sind in der Lage Ihnen die DataNode stoppen können sollten, die man die Dämonen sein würde. Durch das Beenden oder Stoppen des Datenknotens würden Sie den Datenknoten, der wahrscheinlich beschädigt ist, erneut instanziieren. Grundsätzlich starten Sie jvm dieses bestimmten Datenknotens neu. Befehl: beenden: bin/hadoop-daemon.sh stop datanode zu starten: bin/hadoop-daemon.sh start datanode

+0

Hallo, ich habe diesen Fehler mit allen Daten angezeigt. Ich habe 5 Datenknoten im Cluster und probiert alle nacheinander aus. Alle scheitern mit dem gleichen Fehler. –

Verwandte Themen