Как удалить файлы с 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
устарела.