2015-12-07 32 views
12

Ho appena scaricato la VM sandbox di Hortonworks, al suo interno ci sono Hadoop con la versione 2.7.1. Aggiungendo alcuni file utilizzando ilCome eliminare file da HDFS?

hadoop fs -put /hw1/* /hw1 

... comando. Dopo che sto eliminando i file aggiunti, dal ... comando

hadoop fs -rm /hw1/* 

, e dopo la pulizia del cestino, dal ... comando

hadoop fs -expunge 

. Ma lo spazio rimanente DFS non è cambiato dopo la pulizia del cestino del recyle. Anche io posso vedere che i dati sono stati veramente cancellati dal/hw1/e dal cestino del recyle. Ho il fs.trash.interval parameter = 1.

Attualmente posso trovare tutti i miei dati suddivisi in blocchi nella cartella /hadoop/hdfs/data/current/BP-2048114545-10.0.2.15-1445949559569/current/finalized/subdir0/subdir2 e questo mi sorprende molto, perché mi aspetto che vengano eliminati.

Quindi la mia domanda su come eliminare i dati nel modo in cui saranno effettivamente cancellati? Dopo poche aggiunte e cancellazioni ho esaurito lo spazio libero.

+0

Significa il 'namenode' cancellato i metadati, ma il' datanode' non ha cancellato i dati. Controlla i log 'namenode' e' datanode' per errori o avvisi. Prova a eseguire 'hdfs dfsadmin -report' e vedi se hai qualche informazione utile. – alvits

+0

Inoltre ci vorrà del tempo per eseguire la contabilità. –

+0

Hadoop sposta il contenuto nella directory thrash sul comando -rm. Se si desidera eliminare definitivamente le cartelle, è necessario utilizzare il comando 'hadoop fs -rm -skipTrash/hw1/*' –

risposta

8

Il problema è all'interno della base di HDFS. In HDFS (e in molti altri file system) l'eliminazione fisica dei file non è l'operazione più veloce. Poiché HDFS è un file system distribuito e solitamente replica almeno 3 repliche su server diversi del file eliminato, ogni replica (che può consistere di molti blocchi su dischi rigidi diversi) deve essere eliminata in background dopo la richiesta di eliminare il file.

La cancellazione di un file provoca i blocchi associati al file per essere liberati:

Official documentation di Hadoop noi seguente dice. Si noti che potrebbe esserci un ritardo temporale apprezzabile tra il momento in cui un file è eliminato da un utente e l'ora del corrispondente aumento nello spazio libero in HDFS.

+0

grazie, questo era esattamente il problema, dopo che alcuni file di tempo sono stati cancellati – serg

1

Durga Viswanath Gadiraju ha ragione è questione di tempo, forse il mio PC è lento, e usa anche VM, dopo 10 minuti i file vengono cancellati fisicamente, se si utilizza l'algoritmo che ho usato nella domanda. Nota impostare il parametro fs.trash.interval = 1. O per impostazione predefinita i file non verranno cancellati più velocemente di 6 ore.

+0

È possibile impostare 'fs.trash.interval = 0' per disabilitare la funzionalità di cestino per tutto – maxteneff

6

Prova hadoop fs -rm -R URI

-R opzione consente di eliminare la directory e qualsiasi contenuto sotto di essa in modo ricorsivo.

1

ciò che funziona per me:

hadoop fs -rmr -R <your Directory>