Hadoop namenode не удается загрузить fsimage

#java #hadoop #hdfs

#java #hadoop #hdfs

Вопрос:

У меня проблемы с запуском hdfs. Мой кластер состоит из 3 узлов на облачной платформе Google. 1 — активный namenode. Узел 2 должен быть резервным namenode и datanode. Узел 3 — это просто datanode.

Когда я запускаю hdfs, мой активный namenode запущен, а мой резервный namenode — нет, если я попытаюсь открыть пользовательский интерфейс на node1: 50070, все выглядит отлично, но если я попробую node2: 50070, он не сможет подключиться (сайт недоступен). При проверке пользовательского интерфейса datanodes, когда я открываю node2: 50075, я вижу, что namenode 1 находится в запущенном состоянии, в то время как namenode 2 ПОДКЛЮЧАЕТСЯ (и он продолжает оставаться таким, с постоянным увеличением числа сердечных сокращений).

Это довольно забавно, потому что у нас есть другая среда тестирования с точно такой же конфигурацией hdfs, но там у нас нет проблем. Здесь ниже журнал с ошибкой:

 2019-03-05 14:45:02,481 ERROR org.apache.hadoop.hdfs.server.namenode.FSImage: Failed to load image from FSImageFile(file=/persist/hdfs/namenode/current/fsimage_0000000000000951913, cpktTxId=0000000000000951913)
java.io.IOException: Premature EOF from inputStream
    at org.apache.hadoop.io.IOUtils.readFully(IOUtils.java:208)
    at org.apache.hadoop.hdfs.server.namenode.FSImageFormat$LoaderDelegator.load(FSImageFormat.java:220)
    at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:931)
    at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:915)
    at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImageFile(FSImage.java:788)
    at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:718)
    at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:316)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFSImage(FSNamesystem.java:1044)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFromDisk(FSNamesystem.java:707)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:635)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:696)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:906)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:885)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1626)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1694)
2019-03-05 14:45:02,534 INFO org.apache.hadoop.hdfs.server.namenode.FSNamesystem: FSNamesystem write lock held for 12202 ms via
java.lang.Thread.getStackTrace(Thread.java:1559)
org.apache.hadoop.util.StringUtils.getStackTrace(StringUtils.java:1033)
org.apache.hadoop.hdfs.server.namenode.FSNamesystemLock.writeUnlock(FSNamesystemLock.java:252)
org.apache.hadoop.hdfs.server.namenode.FSNamesystem.writeUnlock(FSNamesystem.java:1572)
org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFSImage(FSNamesystem.java:1073)
org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFromDisk(FSNamesystem.java:707)
org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:635)
org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:696)
org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:906)
org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:885)
org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1626)
org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1694)
    Number of suppressed write-lock reports: 0
    Longest write-lock held interval: 12202
2019-03-05 14:45:02,535 WARN org.apache.hadoop.hdfs.server.namenode.FSNamesystem: Encountered exception loading fsimage
java.io.IOException: Failed to load FSImage file, see error(s) above for more info.
    at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:732)
    at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:316)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFSImage(FSNamesystem.java:1044)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFromDisk(FSNamesystem.java:707)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:635)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:696)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:906)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:885)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1626)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1694)
2019-03-05 14:45:02,555 INFO org.mortbay.log: Stopped HttpServer2$SelectChannelConnectorWithSafeStartup@core-acc2:50070
2019-03-05 14:45:02,563 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: Stopping NameNode metrics system...
2019-03-05 14:45:02,564 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: NameNode metrics system stopped.
2019-03-05 14:45:02,565 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: NameNode metrics system shutdown complete.
2019-03-05 14:45:02,565 ERROR org.apache.hadoop.hdfs.server.namenode.NameNode: Failed to start namenode.
java.io.IOException: Failed to load FSImage file, see error(s) above for more info.
    at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:732)
    at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:316)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFSImage(FSNamesystem.java:1044)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFromDisk(FSNamesystem.java:707)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:635)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:696)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:906)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:885)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1626)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1694)
2019-03-05 14:45:02,568 INFO org.apache.hadoop.util.ExitUtil: Exiting with status 1
2019-03-05 14:45:02,595 INFO org.apache.hadoop.hdfs.server.namenode.NameNode: SHUTDOWN_MSG: 
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at
  

(Я обрезал журнал при копировании-вставке).

Как вы можете видеть, ошибка очевидна, namenode 2 не может загрузить fsimage. Однако я не уверен, связана ли причина только с самим fsimage или есть нечто большее, поскольку я вижу исключение EOF и сообщение о задержке блокировки записи, которое я раньше не видел.

Что я заметил / попробовал:

  1. Я проверил, присутствует ли fsimage и находится ли он в нужном каталоге, и да, fsimage был там.
  2. Я заметил, что количество правок_xxxxxx-xxxxxx в каталоге hdfs / namenode / current узла 2 было действительно огромным по сравнению с узлом 1, но я не трогал ни один из файлов.
  3. Я попытался скопировать каталог журнала узла 1, чтобы заменить каталог в узле 2, чтобы посмотреть, может ли помочь исправный журнал, но это не сработало.
  4. Я попытался запустить hdfs namenode -recover, но я практически получил тот же вывод журнала обратно.

Я где-то читал, что это может быть связано с таймаутом или количеством потоков, созданных java, или чем-то подобным, у вас есть какие-либо предложения?

Заранее благодарю вас.

Комментарии:

1. community.hortonworks.com/content/supportkb/49438/…

2. Возможно, это не поможет с вашей проблемой, но есть исправление для удаления шума из журналов при непрерывном сбое подключения (преждевременный EOF исключения IOException) issues.apache.org/jira/plugins/servlet/mobile#issue/HDFS-9572

3. И, конечно, проверьте также место на диске, достаточно ли на нем индексных индексов (df -i ), но я полагаю, вы это сделали.

4. Спасибо, ребята, я попробую предложенные методы один за другим и посмотрю, сработает ли это!