Вопрос или проблема
Мне поручено найти и удалить множество файлов (я бы сказал, десятки тысяч из них) в нашем хранилище HDFS. Эта операция удаления будет использовать Корзину (т.е. без -skipTrash
).
Я новичок в Hadoop / HDFS, но смог ознакомиться с внутренней документацией / процедурами / скриптами, и большинство из них выполняет операции в HDFS, используя различные технологии параллелизации.
- Можно ли безопасно предположить, что удаление файлов из HDFS фактически перемещает их в корзину, которая, в свою очередь, перемещает только метаданные, но не сами данные?
- Если да, то можно ли сказать, что это использует немного операций записи/чтения диска на удаленный файл и что это довольно быстро? (“быстро” означает намного быстрее, чем чтение + запись каждого файла целиком из его исходной директории в корзину, что подразумевает копирование гигабайтов данных)
- Увеличит ли запуск пакетов файлов для удаления параллельно производительность? Или это не стоит добавленной сложности?
Ответ или решение
Удаление файлов из HDFS с использованием корзины (Trash) действительно является процессом с низкой нагрузкой на ввод-вывод (I/O). Давайте разберем ваши вопросы по порядку:
-
Безопасно ли утверждение, что удаление файлов из HDFS на самом деле перемещает их в корзину, при этом перемещая только метаданные, а не сами данные?
Да, ваше предположение верно. При удалении файла в HDFS с использованием корзины, фактически перемещается только метадата файла (информация о файле), а сами данные остаются на диске до тех пор, пока корзина не будет очищена или пока не истечет срок хранения данных в корзине. Это означает, что процесс удаления не требует физического перемещения больших объемов данных, что значительно сокращает необходимые ресурсы ввода-вывода.
-
Правильно ли утверждать, что это использует мало операций ввода-вывода на каждый удаленный файл и что процесс довольно быстр?
Да, можно сказать, что операция удаления при использовании корзины требует минимального объема операций I/O. В отличие от полного удаления файла, которое потребовало бы чтения и записи данных на диск, удаление с перемещением в корзину идет только по метаданным, поэтому это требует значительно меньше ресурсов и времени. Таким образом, процесс удаления файлов таким образом является быстрым.
-
Будет ли запуск批 масс удаления файлов в параллельном режиме действительно увеличивать производительность? Или стоит ли добавленная сложность того?
Запуск группировки удаления файлов в параллельном режиме может улучшить производительность, особенно если вы удаляете большое количество файлов. HDFS хорошо справляется с параллельными задачами, и если ваша система имеет достаточные ресурсы, это может привести к более быстрому выполнению операций. Тем не менее, стоит учитывать, что добавление параллелизма также увеличивает сложность настройки и мониторинга процессов. Если у вас ограниченные ресурсы или если операции удаления вызывают значительную нагрузку на систему, могут быть ограничения на максимальное количество одновременно выполняемых задач. В таких случаях стоит тщательно протестировать разные подходы и найти оптимальный баланс между производительностью и управляемостью.
В заключение, использование корзины для удаления файлов в HDFS является эффективным и менее ресурсоемким способом, и вы можете использовать параллельные операции для повышения производительности, если это разумно с точки зрения ресурсов и архитектуры вашего кластера.