Как удалить файлы с HDFS?

Я только что загрузил песочницу Hortonworks VM, внутри которой есть Hadoop с версией 2.7.1. Я добавляю несколько файлов с помощью

hadoop fs -put /hw1/* /hw1

... команда. После этого я удаляю добавленные файлы,

hadoop fs -rm /hw1/*

... и после очистки корзины с помощью

hadoop fs -expunge

... команда. Но оставшееся пространство DFS не изменилось после очистки очищенного контейнера. Даже я вижу, что данные были действительно удалены из/hw1/и корзины recyle. У меня есть fs.trash.interval parameter = 1.

На самом деле я могу найти все мои данные, разделенные кусками в папке /hadoop/hdfs/data/current/BP-2048114545-10.0.2.15-1445949559569/current/finalized/subdir0/subdir2, и это меня действительно удивляет, потому что я ожидаю, что они будут удалены.

Итак, мой вопрос, как удалить данные так, как они действительно будут удалены? После нескольких добавлений и удалений я исчерпал свободное пространство.

Ответ 1

Ваша проблема внутри основы HDFS. В HDFS (и во многих других файловых системах) физическое удаление файлов - не самая быстрая операция. Поскольку HDFS является распределенной файловой системой и обычно реплицирует не менее 3 реплик на разных серверах удаленного файла, каждая реплика (которая может состоять из множества блоков на разных жестких дисках) должна быть удалена в фоновом режиме после вашего запроса на удаление файла.

Официальная документация Hadoop сообщает нам следующее:

Удаление файла вызывает освобождение блоков, связанных с файлом. Обратите внимание, что может быть значительная задержка между временем удаления файла пользователем и временем соответствующего увеличения свободного места в HDFS.

Ответ 2

Попробуйте hadoop fs -rm -R URI

Параметр

-R удаляет каталог и любой контент под ним рекурсивно.

Ответ 3

что работает для меня:

hadoop fs -rmr -R <your Directory>

Ответ 4

Durga Viswanath Gadiraju прав, это вопрос времени, может быть, мой компьютер работает медленно, а также использует VM, через 10 минут файлы физически удаляются, если вы используете алгоритм, который используется мной в вопросе. Примечание: установите параметр fs.trash.interval = 1. Или по умолчанию файлы не будут удаляться быстрее 6 часов.

Ответ 5

Ты можешь использовать

hdfs dfs -rm -R /path/to/HDFS/file

поскольку hadoop dfs устарела.