нет ошибки наменода в псевдо-режиме - PullRequest
14 голосов
/ 23 июня 2011

Я новичок в hadoop и сейчас на стадии обучения.Согласно руководству Hadoop Definitve, я настроил свой hadoop в псевдораспределенном режиме, и все работало нормально.Я даже смог выполнить все примеры из главы 3 вчера.Сегодня, когда я перезагрузил свой Unix и попытался запустить start-dfs.sh, а затем попытался localhost: 50070 ... это показывает ошибку, и когда я пытаюсь остановить dfs (stop-dfs.sh), этоговорит, что нет наменода, чтобы остановиться.Я гуглил проблему, но безрезультатно.Кроме того, когда я снова форматирую свой namenode ... все начинает работать нормально, и я могу подключиться к localhost: 50070 и даже копировать файлы и каталоги в hdfs, но как только я перезагружаю Linuxпопробуйте подключиться к hdfs, возникает та же проблема.

Ниже приведен журнал ошибок:

************************************************************/
2011-06-22 15:45:55,249 INFO org.apache.hadoop.hdfs.server.namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG:   host = ubuntu/127.0.1.1
STARTUP_MSG:   args = []
STARTUP_MSG:   version = 0.20.203.0
STARTUP_MSG:   build = http://svn.apache.org/repos/asf/hadoop/common/branches/branch-0.20-security-203 -r 1099333; compiled by 'oom' on Wed May  4 07:57:50 PDT 2011
************************************************************/
2011-06-22 15:45:56,383 INFO org.apache.hadoop.metrics2.impl.MetricsConfig: loaded properties from hadoop-metrics2.properties
2011-06-22 15:45:56,455 INFO org.apache.hadoop.metrics2.impl.MetricsSourceAdapter: MBean for source MetricsSystem,sub=Stats registered.
2011-06-22 15:45:56,494 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: Scheduled snapshot period at 10 second(s).
2011-06-22 15:45:56,494 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: NameNode metrics system started
2011-06-22 15:45:57,007 INFO org.apache.hadoop.metrics2.impl.MetricsSourceAdapter: MBean for source ugi registered.
2011-06-22 15:45:57,031 WARN org.apache.hadoop.metrics2.impl.MetricsSystemImpl: Source name ugi already exists!
2011-06-22 15:45:57,059 INFO org.apache.hadoop.metrics2.impl.MetricsSourceAdapter: MBean for source jvm registered.
2011-06-22 15:45:57,070 INFO org.apache.hadoop.metrics2.impl.MetricsSourceAdapter: MBean for source NameNode registered.
2011-06-22 15:45:57,374 INFO org.apache.hadoop.hdfs.util.GSet: VM type       = 32-bit
2011-06-22 15:45:57,374 INFO org.apache.hadoop.hdfs.util.GSet: 2% max memory = 19.33375 MB
2011-06-22 15:45:57,374 INFO org.apache.hadoop.hdfs.util.GSet: capacity      = 2^22 = 4194304 entries
2011-06-22 15:45:57,374 INFO org.apache.hadoop.hdfs.util.GSet: recommended=4194304, actual=4194304
2011-06-22 15:45:57,854 INFO org.apache.hadoop.hdfs.server.namenode.FSNamesystem: fsOwner=anshu
2011-06-22 15:45:57,854 INFO org.apache.hadoop.hdfs.server.namenode.FSNamesystem: supergroup=supergroup
2011-06-22 15:45:57,854 INFO org.apache.hadoop.hdfs.server.namenode.FSNamesystem: isPermissionEnabled=true
2011-06-22 15:45:57,868 INFO org.apache.hadoop.hdfs.server.namenode.FSNamesystem: dfs.block.invalidate.limit=100
2011-06-22 15:45:57,869 INFO org.apache.hadoop.hdfs.server.namenode.FSNamesystem: isAccessTokenEnabled=false accessKeyUpdateInterval=0 min(s), accessTokenLifetime=0 min(s)
2011-06-22 15:45:58,769 INFO org.apache.hadoop.hdfs.server.namenode.FSNamesystem: Registered FSNamesystemStateMBean and NameNodeMXBean
2011-06-22 15:45:58,809 INFO org.apache.hadoop.hdfs.server.namenode.NameNode: Caching file names occuring more than 10 times
**2011-06-22 15:45:58,825 INFO org.apache.hadoop.hdfs.server.common.Storage: Storage directory /tmp/hadoop-anshu/dfs/name does not exist.
2011-06-22 15:45:58,827 ERROR org.apache.hadoop.hdfs.server.namenode.FSNamesystem: FSNamesystem initialization failed.
org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: Directory /tmp/hadoop-anshu/dfs/name is in an inconsistent state: storage directory does not exist or is not accessible.
    at org.apache.h**adoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:291)
    at org.apache.hadoop.hdfs.server.namenode.FSDirectory.loadFSImage(FSDirectory.java:97)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.initialize(FSNamesystem.java:379)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.<init>(FSNamesystem.java:353)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:254)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:434)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1153)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1162)
2011-06-22 15:45:58,828 ERROR org.apache.hadoop.hdfs.server.namenode.NameNode: org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: Directory /tmp/hadoop-anshu/dfs/name is in an inconsistent state: storage directory does not exist or is not accessible.
    at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:291)
    at org.apache.hadoop.hdfs.server.namenode.FSDirectory.loadFSImage(FSDirectory.java:97)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.initialize(FSNamesystem.java:379)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.<init>(FSNamesystem.java:353)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:254)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:434)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1153)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1162)

2011-06-22 15:45:58,829 INFO org.apache.hadoop.hdfs.server.namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at ubuntu/127.0.1.1
************************************************************/

Любая помощь приветствуется Спасибо

Ответы [ 8 ]

14 голосов
/ 08 июля 2011

вот кикер:

org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: Директория / tmp / hadoop-anshu / dfs / name находится в несовместимом состоянии: хранилище каталог не существует или не существует доступный.

У меня были похожие проблемы. я использовал stop-all.sh, чтобы выключить hadoop. я думаю, что было бы глупо с моей стороны думать, что это правильно сохранит данные в моей HDFS.

но, насколько я могу судить по тому, что кажется подходящим фрагментом кода в сценарии hadoop-daemon.sh, это не так - он просто убивает процессы:

(stop)

    if [ -f $pid ]; then
      if kill -0 `cat $pid` > /dev/null 2>&1; then
        echo stopping $command
        kill `cat $pid`
      else
        echo no $command to stop
      fi
    else
      echo no $command to stop
    fi

Вы смотрели, существует ли каталог, на который он жалуется? я проверил, а мой - нет, хотя там была (пустая!) папка с данными, я думаю, что данные могли когда-то жить.

поэтому я предположил, что нам нужно настроить Hadoop таким образом, чтобы наши namenode и datanode НЕ сохранялись в каталоге tmp. Существует некоторая вероятность того, что ОС выполняет обслуживание и избавляется от этих файлов. либо этот хеймбл полагает, что вы больше не заботитесь о них, потому что вы не оставили бы их в каталоге tmp, если бы это сделали, и вы не перезапустили бы свой компьютер в середине работы по уменьшению карты. Я не думаю, что это должно произойти (я имею в виду, это не то, как i будет проектировать вещи), но это казалось хорошим предположением.

так, на основании этого сайта http://wiki.datameer.com/display/DAS11/Hadoop+configuration+file+templates я отредактировал файл conf / hdfs-site.xml, указав следующие пути (очевидно, создайте свои собственные каталоги, как считаете нужным):

<property>
  <name>dfs.name.dir</name>
  <value>/hadoopstorage/name/</value>
</property>

<property>
  <name>dfs.data.dir</name>
  <value>/hadoopstorage/data/</value>
</property>

Сделал это, отформатировал новый namenode (к сожалению, потеря данных кажется неизбежной в этой ситуации), остановил и запустил hadoop со скриптами оболочки, перезапустил машину, и мои файлы все еще были там ...

YMMV ... надеюсь, это работает для вас! Я работаю на OS X, но не думаю, что у вас должны быть разные результаты.

* * J тысяча двадцать восемь
8 голосов
/ 23 июня 2011

Если вы не заботитесь о потере данных, просто выполните команду:

./hadoop namenode -format
5 голосов
/ 18 апреля 2012

У меня была похожая проблема, и это помогло

chown -R hdfs:hadoop /path/to/namenode/date/dir
1 голос
/ 04 февраля 2015

JSH ответ правильный.

Всего пара изменений для hadoop 2.6, которые я должен был сделать:

<property>
  <name>dfs.namenode.name.dir</name>
  <value>/hadoopstorage/name/</value>
</property>

<property>
  <name>dfs.datanode.data.dir</name>
  <value>/hadoopstorage/data/</value>
</property>
1 голос
/ 27 мая 2013

Настройка этих свойств в файле conf / hdfs-site.xml работала для меня !!!

Спасибо, Jsh

<property>
  <name>dfs.name.dir</name>
  <value>/hadoopstorage/name/</value>
</property>

<property>
  <name>dfs.data.dir</name>
  <value>/hadoopstorage/data/</value>`enter code here`
</property>

Не забудьте установить соответствующие разрешения для этих каталогов

0 голосов
/ 19 мая 2016

У меня похожая проблема, но немного другая.

Запуск start-all.sh швы довольно хороши, но jps показывает, что нет наменодов, и я не мог видеть список при запуске hdfs dfs -ls /.

Моя первая попытка - запустить hadoop namenode -format , затем появится namenode, но datanode исчезнет.

После поиска решения я запускаю rm -rf / usr / local / hadoop_store / hdfs / datanode / * и перезапускаю hadoop, jps показывает:

    12912 ResourceManager  
    13391 FsShell  
    13420 Jps  
    13038 NodeManager  
    12733 SecondaryNameNode  
    12432 NameNode  
    12556 DataNode  

Теперь я могу использовать команды hadoop как обычно.

НТН!

0 голосов
/ 02 мая 2013

См. Ваш coresite.xml в каталоге конфигурации hadoop

  1. Перейти в каталог конфигурации
  2. vi core-site.xml,hdf.site.xml
  3. Убедитесь, что номера портов и пути указаны правильно
0 голосов
/ 11 декабря 2011

Если вы не решили проблему, попробуйте следующее: укажите каталог dfs.name.dir в группе пользователей hadoop и дайте группе разрешение на запись.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...