2017-09-25 3 views
0

Jeden Tag meldet unser Hadoop-Cluster, dass "untervervielfältigte Blöcke" sind. Es wird von Cloudera Manager verwaltet. Ein Beispiel für die Gesundheitswarnung ist:HDFS wiederkehrender Fehler: unterreplizierte Blöcke

! Under-Replicated Blocks

Concerning: 767 under replicated blocks in the cluster. 3,115 total blocks in the cluster. Percentage under replicated blocks: 24.62%. Warning threshold: 10.00%.

Ich habe Befehle läuft, der das Problem behebt, aber am nächsten Morgen ist die Warnung zurück und manchmal ohne neue Daten hinzugefügt werden. Einer der vorübergehend erfolgreichen Kommandos war

hdfs dfs -setrep -R 2 /* 

ich auch another recommended command versucht haben

su hdfs 
hdfs fsck/| grep 'Under replicated' | awk -F':' '{print $1}' >> /tmp/under_replicated_files 
for hdfsfile in `cat /tmp/under_replicated_files`; do echo "Fixing $hdfsfile :" ; hadoop fs -setrep 2 $hdfsfile; done 

Beide funktionieren, aber die Lösung ist nicht dauerhaft.

Im Cloudera Manager sind Replication Factor und Minimal Block Replication beide auf 2 eingestellt.

Da das Problem nur etwa einmal alle 24 Stunden auftritt, ist es schwierig und zeitraubend zu versuchen, es zu reparieren, wobei Versuch und Irrtum mein einziger Ausweg ist. Ich habe keine Ahnung, warum dieser Fehler immer wieder kommt! Irgendwelche Vorschläge würden geschätzt werden. Dank

+0

Wenn Sie Daten unterrepliziert haben, sollte HDFS die Blöcke einfach automatisch in andere Datenknoten replizieren, um den Replikationsfaktor zu erreichen. Sie können auch einen in CM> HDFS> Aktionen angezeigten Balancer ausführen, um diesen Fehler zu beheben. Wie viele Datenknoten haben Sie in Ihrem Cluster? Haben Sie über NN Web UI gesehen, welche Dateien die unterreplizierten Blöcke haben? Sind diese Dateien temporäre Dateien, die von einem Job erstellt wurden? Hast du gesehen, ob diese Warnung nach einiger Zeit wegfällt, ohne dass etwas getan wurde? – Salim

+0

Haben Sie einen Job, der mit der gleichen Trittfrequenz ausgeführt wird wie das Problem? – tk421

+0

@ tk421 Leider nein, es scheint zu passieren, ohne irgendwelche Datenaufnahme-Jobs (oder Jobs, egal) – Smittey

Antwort

0

gelöst Ausgabe durch die folgende HDFS Konfiguration in Cloudera Manager-Einstellung:

  1. Zum HDFS-Service.
  2. Klicken Sie auf die Registerkarte Konfiguration.
  3. Wählen Sie Bereich> NameNode.
  4. Filesystem Trash Interval: 0 day(s)

    Eingabe von '0' deaktiviert Funktion, um den Papierkorb.

Diese Eigenschaft kann auch fs.trash.interval

Sobald ich das ich all die säumige unreplicated trash Blöcke gelöscht gesetzt hatte, unter Verwendung konfiguriert werden - , indem Sie in der indem Sie den folgenden Befehl erzeugt under_replicated_files Datei gezeigt:

hdfs fsck/| grep 'Under replicated' | awk -F':' '{print $1}' >> /tmp/under_replicated_files 

Ich landete nur alle löschen .Trash für die Benutzer.

Das alles dann gestoppt etwas anderes in verschoben werden. Trash, sobald es gelöscht wurde (was ich realisiere, ist vielleicht keine akzeptable Lösung für jedermann, aber das war völlig in Ordnung für meinen Anwendungsfall). Auch die Entfernung aller unreplizierten Blöcke bedeutete, dass die Warnung verschwand.

Verwandte Themen