2015-12-07 11 views
12

Ich habe gerade Hortonworks Sandbox VM heruntergeladen, darin gibt es Hadoop mit der Version 2.7.1. Ich füge einige Dateien mit demWie lösche ich Dateien vom HDFS?

hadoop fs -put /hw1/* /hw1 

... Befehl hinzu. Nachdem es mir das Löschen der Dateien hinzugefügt, durch den

hadoop fs -rm /hw1/* 

... Befehl ein, und nachdem es den Papierkorbs der Reinigung durch den

hadoop fs -expunge 

... Befehl. Der DFS Remaining-Speicherplatz wurde jedoch nicht geändert, nachdem der Papierkorb bereinigt wurde. Selbst ich kann sehen, dass die Daten wirklich aus dem/hw1/und dem Recyle Bin gelöscht wurden. Ich habe die fs.trash.interval parameter = 1.

Eigentlich kann ich alle meine Daten in Stücke im Ordner /hadoop/hdfs/data/current/BP-2048114545-10.0.2.15-1445949559569/current/finalized/subdir0/subdir2 aufgeteilt finden, und das ist wirklich überraschend, weil ich erwarte, dass sie gelöscht werden.

Also meine Frage, wie Sie die Daten so löschen, dass sie wirklich gelöscht werden? Nach ein paar Hinzufügungen und Löschungen hatte ich freien Speicherplatz.

+0

Es bedeutet, dass die 'namenode' die Metadaten gelöscht, aber die' datanode' löschen, die Daten nicht. Überprüfen Sie Ihre 'namenode'- und' datanode'-Protokolle auf Fehler oder Warnungen. Versuchen Sie 'hdfs dfsadmin -report' auszuführen und sehen Sie, ob Sie nützliche Informationen erhalten. – alvits

+0

Auch wird es einige Zeit dauern, um die Buchhaltung durchzuführen. –

+0

Hadoop verschiebt den Inhalt in das thrash-Verzeichnis unter dem Befehl -rm. Wenn Sie Ordner dauerhaft löschen wollen, müssen Sie den Befehl 'hadoop fs -rm -skipTrash/hw1/*' –

Antwort

8

Ihr Problem ist innerhalb der Grundlage von HDFS. In HDFS (und in vielen anderen Dateisystemen) ist das physische Löschen von Dateien nicht die schnellste Operation. Da HDFS ein verteiltes Dateisystem ist und normalerweise mindestens 3 Replikate auf verschiedenen Servern der gelöschten Datei repliziert, muss jedes Replikat (das aus vielen Blöcken auf verschiedenen Festplatten bestehen kann) im Hintergrund nach Ihrer Anforderung zum Löschen der Datei gelöscht werden.

Official documentation von Hadoop sagt uns folgendes:

Das Löschen einer Datei die Blöcke, die mit der Datei verursacht befreit werden. Beachten Sie, dass eine nennenswerte Zeitverzögerung zwischen der Zeit, die eine Datei von einem Benutzer gelöscht wird, und der Zeit des entsprechenden Anstiegs in freien Speicherplatz in HDFS sein kann.

+0

Danke, das war genau das Problem, nach einiger Zeit wurden Dateien gelöscht – serg

1

Durga Viswanath Gadiraju hat recht, es ist eine Frage der Zeit, vielleicht ist mein PC langsam, und nutzt auch VM, nach 10 Minuten Dateien werden physikalisch gelöscht, wenn Sie den Algorithmus verwenden, die von mir in der Frage verwendet. Hinweis: Legen Sie den Parameter fs.trash.interval = 1 fest. Dateien werden standardmäßig nicht schneller als 6 Stunden gelöscht.

+0

Sie können 'fs.trash.interval = 0' einstellen, um das Papierkorb-Feature überhaupt zu deaktivieren – maxteneff

6

Versuchen hadoop fs -rm -R URI

-R Option das Verzeichnis und alle Inhalte unter rekursiv gelöscht.

1

was für mich:

hadoop fs -rmr -R <your Directory>