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, выполните следующие действия:
-
На странице Clusters выберите нужный кластер.
-
Перейдите на вкладку Services и нажмите на HDFS.
-
Включите опцию Show Advanced и найдите поле Custom hdfs-site.xml.
-
Добавьте параметр
dfs.namenode.backup.address
и его значение<host>:50100
, где<host>
— это FQDN хоста для Checkpoint node. В одном кластере можно создать несколько Checkpoint node. -
Опционально, добавьте параметр
dfs.namenode.backup.http-address
и его значение<host>:50105
, где<host>
— это FQDN хоста для Checkpoint node. -
Перезапустите HDFS с параметром Apply configs from ADCM.
-
Подключитесь к хосту для Checkpoint node через SSH и выполните команду от имени суперпользователя HDFS:
$ hdfs namenode -checkpoint
-
На странице Clusters выберите нужный кластер.
-
Перейдите на вкладку Services и нажмите на HDFS.
-
Включите параметр Show Advanced и найдите поле Custom hdfs-site.xml.
-
Добавьте параметр
dfs.namenode.backup.address
и его значение<host>:50100
, где<host>
— это FQDN хоста для Backup node. В одном кластере может быть запущен только один Backup node. -
Опционально, добавьте параметр
dfs.namenode.backup.http-address
и его значение<host>:50105
, где<host>
— это FQDN хоста для Backup node. -
Подтвердите изменения в конфигурации HDFS, нажав Save.
-
В меню Actions выберите Restart, убедитесь, что для параметра Apply configs from ADCM установлено значение true, и нажмите Run.
-
Подключитесь к хосту для Backup node через SSH и выполните команду от имени суперпользователя HDFS:
$ hdfs namenode -backup
РЕКОМЕНДАЦИЯ
При запуске сервиса создания контрольных точек могут возникнуть ошибки, связанные с отсутствием нужных директорий или прав на их редактирование. Их можно решить создав нужные каталоги и установив на них разрешения для пользователя Hadoop.
|
Команды CLI
Чтобы создать новую контрольную точку вручную, используйте команду:
$ hdfs dfsadmin -saveNamespace
Чтобы удалить ненужные контрольные точки, используйте команду expunge.
Подробнее о командах для управления сервисами создания контрольных точек читайте в описании следующих команд:
Импорт контрольной точки
Чтобы восстановить утерянный fsimage или создать новый NameNode из существующей контрольной точки, вы можете импортировать контрольную точку.
Чтобы импортировать контрольную точку в NameNode:
-
Убедитесь, что директория, указанная в параметре
dfs.namenode.name.dir
, существует и в ней нет файлов. -
Убедитесь, что параметр
dfs.namenode.checkpoint.dir
содержит путь к директории с контрольной точкой. -
Запустите NameNode, используя опцию
-importCheckpoint
:
$ hdfs namenode -importCheckpoint
NameNode загрузит контрольную точку из директории, указанной в dfs.namenode.checkpoint.dir
, и сохранит ее в директории NameNode, заданной в dfs.namenode.name.dir
.