Процесс восстановления NameNode в HDFS
Прежде чем начать восстановление
ВНИМАНИЕ
Ручное восстановление NameNode может привести к потере данных. Не начинайте восстановление, если есть другая действительная копия файлов edits и fsimage. Например, на другой NameNode. Использовать рабочую копию безопасней, чем пытаться восстановить поврежденную. Если необходимо ручное восстановление NameNode, предварительно сохраните все метаданные. |
Команда recovery
в Hadoop используется для восстановления потерянных или поврежденных метаданных на NameNode, когда другие способы восстановления недоступны. Например, в кластерах без резервных NameNode и контрольных точек.
Для кластеров высокой доступности восстановление NameNode вручную практически никогда не требуется. Сервисов Journal Nodes и резервных NameNode обычно достаточно для обеспечения целостности метаданных.
Чтобы избежать повреждения метаданных, вы можете:
-
Хранить несколько копий метаданных NameNode на разных дисках.
-
Настройть режим высокой доступности или использовать checkpointing.
Процесс восстановления
Чтобы вручную восстановить NameNode после сбоя:
-
Подключитесь к хосту NameNode через SSH.
-
От имени пользователя
root
создайте директорию logs для запуска команды восстановления и предоставьте пользователюhdfs
необходимые разрешения:mkdir /usr/lib/hadoop/logs chown -R hdfs:hadoop /usr/lib/hadoop/logs chmod -R 755 /usr/lib/hadoop/logs
-
Войдите в систему как пользователь
hdfs
и включите безопасный режим NameNode SafeMode:su hdfs $ hdfs dfsadmin -safemode enter
-
Отключите NameNode от имени пользователя
root
:systemctl stop hadoop-hdfs-namenode
-
Запустите команду 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)
-
Нажмите
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
-
Запустите NameNode от имени пользователя
root
:systemctl start hadoop-hdfs-namenode
-
Отключите безопасный режим от имени пользователя
hdfs
:
$ hdfs dfsadmin -safemode leave
Действия при восстановлении
Во время восстановления системе может потребоваться вмешательство пользователя. При возникновении ошибки необходимо выбрать одно из четырех действий:
-
c
(Continue) — проигнорировать ошибку и попытаться сохранить оставшиеся данные. -
s
(Stop) — прекратить чтение edits-файлов и не пытаться сохранить оставшиеся данные. В этом случае непрочитанные данные будут безвозвратно утеряны. -
q
(Quit) — завершить команду восстановления без сохранения. -
a
(Always) — всегда выбирать вариантc
. При возникновении ошибок система автоматически выберет действиеc
, не предлагая пользователю выбор.
Если на старте команды использована опция -force
, система всегда выбирает первое действие, то есть c
.