Несколько снимков в каталоге

#hadoop #hdfs #bigdata #cloudera #snapshot

#hadoop #hdfs #bigdata #cloudera #снимок

Вопрос:

У нас есть кластер в Cloudera. Мы используем снимки для HDFS для резервного копирования. Недавно мы увидели, что пространство, используемое в HDFS, значительно увеличилось. Мы подозреваем, что это связано с тем, что снимки, которые мы используем для резервного копирования.

  1. Когда мы пытаемся увидеть размер каталога, мы видим следующее:

    путь hdfs dfs -du -s -h

    12,4 T 76,8 T путь

  2. Когда мы пытаемся увидеть размер этого каталога, мы видим совершенно другую вещь:

    hdfs dfs -du -h -s -x

    12.4 T 37.2 T

Мы также попытались посмотреть на размер снимков при этом . Размеры следующие:

 hdfs dfs -du -s -h <path>/.snapshot
9.1 T  63.6 T <path>/.snapshot/snap-new
10.9 T  68.0 T <path>/.snapthot/snap-old
12.4 T  37.2 T <path>/.snapshot/snap-of-today
 

Мой вопрос здесь в том, если я удалю все эти снимки (snap-new, snap-old, snap-of-today), мы начнем видеть размер, подобный номеру 2?

Если нет, что мне нужно сделать, чтобы начать видеть размер, подобный номеру 2?

Заранее спасибо!

Ответ №1:

В HDFS невозможно увидеть, сколько места использует конкретный снимок. Как правило, самый старый снимок будет занимать больше всего места, но это зависит от того, когда вы удаляете и перезагружаете данные. Все данные, охватываемые снимком, не будут удалены при удалении данных. Из ваших выходных данных du:

 12.4 T 76.8 T path
 

Обратите внимание, что 3 x 12,4 = 37,2. Итак, все ваши моментальные снимки используют 76,8 — 37,2 = 39,6 T сверх того, что находится в текущей файловой системе, которая использует 37,2T. Переключатель -x исключает данные моментальных снимков, а также показывает 37,2T в текущей файловой системе.

Вы можете видеть, запустив du в каталогах моментальных снимков, он просто сообщает вам, сколько места было занято файлами в моментальном снимке на момент создания моментального снимка. Часть этого пространства будет разделена между всеми снимками и даже между текущей файловой системой, поэтому вы не знаете, какой снимок занимает больше всего места.

Если вы удалите снимки, начиная с самого старого, использование пространства должно сократиться.

Если в вашем кластере есть рабочие нагрузки, которые часто удаляют и повторно создают много данных, снимки значительно увеличат ваши требования к пространству в кластере.

Ответ №2:

Если вы удалите свой снимок, вы будете использовать меньше памяти.

Просто как напоминание о том, почему снимки со временем становятся больше:

Реализация моментальных снимков HDFS эффективна:

Создание моментального снимка происходит мгновенно: стоимость составляет O (1) без учета времени поиска индекса. Дополнительная память используется только при внесении изменений относительно снимка: использование памяти равно O (M), где M — количество измененных файлов / каталогов. Блоки в узлах данных не копируются: в файлах снимков записывается список блоков и размер файла. Копирование данных не выполняется. Снимки не оказывают негативного влияния на обычные операции HDFS: изменения записываются в обратном хронологическом порядке, чтобы можно было получить прямой доступ к текущим данным. Данные моментального снимка вычисляются путем вычитания изменений из текущих данных.