Hadoop Namenode - восстановление
Hadoop администратор может столкнуться с ситуацией когда namenode демон стартовал, но HDFS не отвечает. Попытаемся разобраться что произошло.
Проверьте статус namenode сервиса. Для этого запустите следующую команду на namenode:
Проверьте статус namenode сервиса. Для этого запустите следующую команду на namenode:
service hadoop-hdfs-namenode status
Команда выше может сказать вам, что namenode запущена и, если вы стартовали все PHD сервисы, вы можете увидеть что все datanode сервисы также запустились. Проверьте статус datanode демонов
hadoop-hdfs-datanode status
Бывают ситуации, что оба сервиса запущены, но вы не можете запустить команды hdfs.
В Namenode log-ах должны быть записи о том какой сейчас статус Namenode. Для этого нужно разобраться в том, какие операции должны произойти когда стартует сервис namenode и соотнести их с записями в логах.
Стартовые команды Namenode:
- Namenode инициализирует пространство имён путём чтения последней checkpoint
- Базируясь на информации о checkpoint, namenode повторяет все команды с edit логов и создаёт новое пространство имён
- Создаёт новую checkpoing
- Открывает hadoop communication ports для обслуживания hadoop namenode web UI и других служб(secondary namenode, datanode и т.д.)
- Включает safe mode, только операции чтения namenode могут быть выполнены до тех пор пока достаточное колличество блоков не будет зарегестрировано
- Выключает safe mode, операции чтения и записи HDFS теперь могу быть выполнены
Теперь давайте давайте попробуем понять причины почему namenode может быть занята и почему ниодин UI не может быть открыт и что datanode пытается сделать?
Namenode:
Лог Namenode может пролить некоторое понимание на текущую ситуацию. Если вы видите похожие сообщения на это "replaying edit logs", вы можете соотнести это со 2-м шагом.
После этого возникает вопрос: как долго это всё будет происходить? Колличество времени, которое может понадобиться на эти операции зависит от колличества записей в edit логах, ведь все они должны быть воспроизведены на сервере namenode. Попытайтесь определить когда последний раз была создан успешный checkpoint. Это можно сделать по определению время создания последнего файла fsimage* и по тому, как много edit файлов("ls -l edit* | wc -l"). Место расположения этих файлов указан в параметре dfs.namenode.name.dir в hdfs-site.xml. Используйте эти метрики и прогресс выполнения комманд в логе для того чтобы предугадать временные рамки востановления. Бывают ситуации, когда checkpoint операции не происходили последних 60 дней и восстановление заняло приблизительно 12 часов.
Datanode:
В логах Datanode сервера можно увидеть следующие сообщения:
WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Problem connecting to server: phd11-standby.saturn.local/10.110.127.242:8020
INFO org.apache.hadoop.ipc.Client: Retrying connect to server: phd11-nn.saturn.local/10.110.127.195:8020. Already tried 0 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1 SECONDS)
INFO org.apache.hadoop.ipc.Client: Retrying connect to server: phd11-standby.saturn.local/10.110.127.242:8020. Already tried 0 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1 SECONDS)
Они говорят о том, что datanode пытаются достучаться до namenode и что порт IPC комуникации не открыт, datanode не может зарегестрироваться на namenode. Это можно соотнести с 4 шагом восстановления namenode. В этой ситуации нужно набраться терпения и ждать завершения операции восстановления с edit логов. Но будьте готовы к тому, что могут возникнуть проблемы с memory/garbage collection и failrure to purge large number of edits files.Полезные ссылки:
NameNode Recovery Tools for the HDFS
Коментарі
Дописати коментар