Процесс восстановления NameNode в HDFS

Прежде чем начать восстановление

ВНИМАНИЕ

Ручное восстановление NameNode может привести к потере данных. Не начинайте восстановление, если есть другая действительная копия файлов edits и fsimage. Например, на другой NameNode. Использовать рабочую копию безопасней, чем пытаться восстановить поврежденную. Если необходимо ручное восстановление NameNode, предварительно сохраните все метаданные.

Команда recovery в Hadoop используется для восстановления потерянных или поврежденных метаданных на NameNode, когда другие способы восстановления недоступны. Например, в кластерах без резервных NameNode и контрольных точек.

Для кластеров высокой доступности восстановление NameNode вручную практически никогда не требуется. Сервисов Journal Nodes и резервных NameNode обычно достаточно для обеспечения целостности метаданных.

Чтобы избежать повреждения метаданных, вы можете:

  • Хранить несколько копий метаданных NameNode на разных дисках.

  • Настройть режим высокой доступности или использовать checkpointing.

Процесс восстановления

Чтобы вручную восстановить NameNode после сбоя:

  1. Подключитесь к хосту NameNode через SSH.

  2. От имени пользователя root создайте директорию logs для запуска команды восстановления и предоставьте пользователю hdfs необходимые разрешения:

    mkdir /usr/lib/hadoop/logs
    chown -R hdfs:hadoop /usr/lib/hadoop/logs
    chmod -R 755 /usr/lib/hadoop/logs
  3. Войдите в систему как пользователь hdfs и включите безопасный режим NameNode SafeMode:

    su hdfs
    $ hdfs dfsadmin -safemode enter
  4. Отключите NameNode от имени пользователя root:

    systemctl stop hadoop-hdfs-namenode
  5. Запустите команду recovery (используйте опцию -force, если нужно пропустить выбор) от имени пользователя hdfs:

    $ hdfs namenode -recover

    Появится следующее сообщение:

    You have selected Metadata Recovery mode.  This mode is intended to recover lost metadata on a corrupt filesystem.  Metadata recovery mode often permanently deletes data from your HDFS filesystem.  Please back up your edit log and fsimage before trying this!
    
    Are you ready to proceed? (Y/N)
     (Y or N)
  6. Нажмите Y, чтобы начать процесс восстановления. Система будет выводить в консоль статус процесса восстановления и при необходимости запрашивать выбор действия. После завершения восстановления в выводе команды появится сообщение:

    2023-12-06 11:27:00,283 INFO namenode.MetaRecoveryContext: RECOVERY COMPLETE
    2023-12-06 11:27:00,318 INFO namenode.FSNamesystem: Stopping services started for active state
    2023-12-06 11:27:00,421 INFO namenode.FSNamesystem: Stopping services started for standby state
    2023-12-06 11:27:00,423 INFO namenode.NameNode: SHUTDOWN_MSG:
    /************************************************************
    SHUTDOWN_MSG: Shutting down NameNode at elenas-adh2.ru-central1.internal/127.0.0.1
  7. Запустите NameNode от имени пользователя root:

    systemctl start hadoop-hdfs-namenode
  8. Отключите безопасный режим от имени пользователя hdfs:

$ hdfs dfsadmin -safemode leave

Действия при восстановлении

Во время восстановления системе может потребоваться вмешательство пользователя. При возникновении ошибки необходимо выбрать одно из четырех действий:

  • c (Continue) — проигнорировать ошибку и попытаться сохранить оставшиеся данные.

  • s (Stop) — прекратить чтение edits-файлов и не пытаться сохранить оставшиеся данные. В этом случае непрочитанные данные будут безвозвратно утеряны.

  • q (Quit) — завершить команду восстановления без сохранения.

  • a (Always) — всегда выбирать вариант c. При возникновении ошибок система автоматически выберет действие c, не предлагая пользователю выбор.

Если на старте команды использована опция -force, система всегда выбирает первое действие, то есть c.

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