Использование Observer NameNode

Обзор

Традиционно пара NameNode (Active и Standby) управляют всеми клиентскими взаимодействиями: Active NameNode обрабатывает все операции с пространством имен и запросы метаданных, а Standby остается синхронизированным, но не обслуживает клиентов. В кластере ADH с высокой доступностью (High Availability, HA) добавление роли Observer NameNode решает задачи масштабируемости чтения и обеспечения согласованности при чтении метаданных.

В больших кластерах с высокой нагрузкой на метаданные (например, при частых операциях просмотра каталогов, получении расположения блоков, параллельных чтениях) Active NameNode часто становится узким местом производительности. Роль Observer NameNode реализована для переноса на нее операций чтения (read-only), что позволяет перераспределять поток запросов на чтение с Active NameNode на другие.

При этом сохраняется согласованность данных за счет считывания edits-файлов, а любые случайные запросы на запись отклоняются или перенаправляются на активную NameNode. Такая архитектура обеспечивает согласованность чтения, более равномерное распределение нагрузки и уменьшение задержек при большом объеме операций с метаданными.

Использование роли Observer позволяет кластерам HDFS обрабатывать большие объемы запросов на чтение метаданных (например, от BI-инструментов, при просмотре каталогов или через веб-интерфейсы) без нагрузки на Active NameNode, повышая производительность и отказоустойчивость.

Запуск Observer NameNode

Переведите одну из Standby NameNode в состояние Observer, следуя приведенным ниже инструкциям.

ВАЖНО

Перед назначением роли Observer одной из NameNode убедитесь, что в кластере ADH предварительно развернуты как минимум три NameNode. Это необходимо для обеспечения работоспособности кластера в случае сбоев с Active NameNode.

Обновление конфигурации HDFS

Чтобы начать использовать Observer NameNode в ADH, обновите конфигурацию HDFS через ADCM:

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

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

  3. В разделе hdfs-site.xml установите параметры dfs.namenode.state.context.enabled и dfs.ha.tail-edits.in-progress в значение true.

  4. Подтвердите изменения, нажав Save.

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

Перевод NameNode в состояние Observer

Чтобы перевести Standby NameNode в состояние Observer:

  1. На хосте с NameNode проверьте ее текущее состояние с помощью команды:

    $ hdfs haadmin -getAllServiceState

    Пример вывода:

    elenas-adh-4-2.ru-central1.internal:8020 active
    elenas-adh-4-1.ru-central1.internal:8020 standby
    elenas-adh-4-3.ru-central1.internal:8020 standby
  2. Выполните следующую команду, чтобы перевести NameNode в состояние Observer:

    $ sudo -u hdfs hdfs haadmin -transitionToObserver <service_id> --forcemanual

    где <service_id> — это идентификатор Standby NameNode. Уточнить идентификатор можно в интерфейсе HDFS.

Пример вывода:

2025-10-21 08:30:33,203 WARN ha.HAAdmin: Proceeding with manual HA state management even though
automatic failover is enabled for NameNode at elenas-adh-4-1.ru-central1.internal/10.92.43.218:8020

Проверка состояния Observer NameNode

Чтобы проверить, изменилось ли состояние Standby NameNode, выполните:

$ hdfs haadmin -getAllServiceState

Пример вывода:

elenas-adh-4-2.ru-central1.internal:8020 active
elenas-adh-4-1.ru-central1.internal:8020 observer
elenas-adh-4-3.ru-central1.internal:8020 standby
РЕКОМЕНДАЦИЯ
Вы также можете проверить состояние NameNode через HDFS UI.
Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней