Checkpointing в HDFS

Обзор

Создание контрольных точек (checkpointing) в HDFS — это функция, оптимизирующая работу с метаданными, которая также может использоваться для аварийного восстановления данных.

Сервис NameNode загружает fsimage и применяет изменения из файлов edits только во время запуска. Если HDFS накопит слишком много изменений, edits-файлы займут много дискового пространства, а NameNode будет запускаться дольше.

Чтобы этого не случилось, сервис, создающий контрольные точки, периодически обрабатывает edits-файлы и создает новый fsimage. Это помогает сократить размер edits-файлов и ускорить запуск NameNode.

Создание нового fsimage создает вычислительную нагрузку на кластер. Чтобы поддерживать доступность NameNode во время этой операции, функция обновления fsimage была также реализована в Secondary NameNode и Standby NameNode.

В обычном кластере Hadoop Secondary NameNode отвечает за обработку edits-файлов и обновление fsimage. Чтобы повысить устойчивость кластера к сбоям, вы можете хранить локальную актуальную копию файловой системы, включив либо Checkpointing node, либо Backup node.

ВАЖНО
В кластерах Hadoop с высокой доступностью (High Availability, HA) fsimage периодически создается сервисом Standby NameNode, а edits-файлы обрабатываются и синхронизируются сервисами Quorum Journal Manager. По этой причине в кластерах высокой доступности нет необходимости использовать сервисы Checkpoint node и Backup node.

Для получения дополнительной информации о компонентах HDFS обратитесь к статье Архитектура HDFS.

Конфигурация

Создавать контрольные точки может один из двух сервисов:

  • Checkpoint node — периодически перерабатывает edits-файлы и обновляет fsimage на активном NameNode.

  • Backup node — выполняет те же функции, что и Checkpoint node, и хранит в памяти актуальную копию пространства имен файловой системы, синхронизированную с активным NameNode.

В HDFS можно использовать только либо Checkpoint node, либо Backup node. Оба сервиса одновременно запустить нельзя.

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

Параметры, в которых задаются условия создания контрольной точки:

  • dfs.namenode.checkpoint.period — промежуток времени между контрольными точками. Для указания времени можно использовать сокращение: ms (миллисекунды), s (секунды), m (минуты), h (часы), d (дни). Значение по умолчанию: 3600s.

  • dfs.namenode.checkpoint.txns — количество записей edits, при достижении которого будет создана контрольная точка. Значение по умолчанию: 1000000.

В значении параметра dfs.namenode.checkpoint.check. period можно указать как часто сервис создания контрольных точек должен проверять выполнение любого из этих условий.

Чтобы настроить сервис создания контрольных точек с помощью ADCM, выполните следующие действия:

  • Checkpoint node

  • Backup node

  1. На странице Clusters выберите нужный кластер.

  2. Перейдите на вкладку Services и нажмите на HDFS.

  3. Включите опцию Show Advanced и найдите поле Custom hdfs-site.xml.

  4. Добавьте параметр dfs.namenode.backup.address и его значение <host>:50100, где <host> — это FQDN хоста для Checkpoint node. В одном кластере можно создать несколько Checkpoint node.

  5. Опционально, добавьте параметр dfs.namenode.backup.http-address и его значение <host>:50105, где <host> — это FQDN хоста для Checkpoint node.

  6. Перезапустите HDFS с параметром Apply configs from ADCM.

  7. Подключитесь к хосту для Checkpoint node через SSH и выполните команду от имени суперпользователя HDFS:

    $ hdfs namenode -checkpoint
  1. На странице Clusters выберите нужный кластер.

  2. Перейдите на вкладку Services и нажмите на HDFS.

  3. Включите параметр Show Advanced и найдите поле Custom hdfs-site.xml.

  4. Добавьте параметр dfs.namenode.backup.address и его значение <host>:50100, где <host> — это FQDN хоста для Backup node. В одном кластере может быть запущен только один Backup node.

  5. Опционально, добавьте параметр dfs.namenode.backup.http-address и его значение <host>:50105, где <host> — это FQDN хоста для Backup node.

  6. Подтвердите изменения в конфигурации HDFS, нажав Save.

  7. В меню Actions выберите Restart, убедитесь, что для параметра Apply configs from ADCM установлено значение true, и нажмите Run.

  8. Подключитесь к хосту для Backup node через SSH и выполните команду от имени суперпользователя HDFS:

    $ hdfs namenode -backup
РЕКОМЕНДАЦИЯ
При запуске сервиса создания контрольных точек могут возникнуть ошибки, связанные с отсутствием нужных директорий или прав на их редактирование. Их можно решить создав нужные каталоги и установив на них разрешения для пользователя Hadoop.

Команды CLI

Чтобы создать новую контрольную точку вручную, используйте команду:

$ hdfs dfsadmin -saveNamespace

Чтобы удалить ненужные контрольные точки, используйте команду expunge.

Подробнее о командах для управления сервисами создания контрольных точек читайте в описании следующих команд:

Импорт контрольной точки

Чтобы восстановить утерянный fsimage или создать новый NameNode из существующей контрольной точки, вы можете импортировать контрольную точку.

Чтобы импортировать контрольную точку в NameNode:

  1. Убедитесь, что директория, указанная в параметре dfs.namenode.name.dir, существует и в ней нет файлов.

  2. Убедитесь, что параметр dfs.namenode.checkpoint.dir содержит путь к директории с контрольной точкой.

  3. Запустите NameNode, используя опцию -importCheckpoint:

$ hdfs namenode -importCheckpoint

NameNode загрузит контрольную точку из директории, указанной в dfs.namenode.checkpoint.dir, и сохранит ее в директории NameNode, заданной в dfs.namenode.name.dir.

Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней