Ошибка namenode в псевдорежиме
Я новичок в hadoop и участвую в фазе обучения.
Согласно руководству Hadoop Definitve, я настроил свой хаоп в псевдораспределенном режиме, и все работает нормально. Я даже смог выполнить все примеры из главы 3 вчера. Сегодня, когда я перезагрузил свой unix и попытался запустить start-dfs.sh, а затем попробовал localhost:50070... он показывает ошибку и когда Я пытаюсь остановить dfs (stop-dfs.sh), он говорит, что namenode не останавливается. Я искал эту проблему, но никакого результата. Кроме того, когда я снова форматирую свой 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
************************************************************/
Любая помощь приветствуется
Спасибо вам
Ответы
Ответ 1
вот кикер:
org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: Каталог /tmp/hadoop -anshu/dfs/name находится в противоречивом состоянии: хранение директории не существует или нет доступны.
У меня были похожие проблемы. Я использовал stop -all.sh, чтобы закрыть hadoop. я думаю, мне было глупо думать, что это правильно сохранит данные в моей HDFS.
но насколько я могу судить по тому, что кажется подходящим фрагментом кода в hasoop-daemon.sh script, это не так - он просто убивает процессы:
(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, если бы вы это сделали, и вы не перезапустили бы ваш компьютер в середине работы по сокращению карты. Я действительно не думаю, что это должно произойти (я имею в виду, что не так, как я буду создавать вещи), но это казалось хорошим догадкой.
поэтому на основе этого сайта 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 (к сожалению, потеря данных кажется неизбежной в этой ситуации), остановился и начал hasoop с помощью сценариев оболочки, перезапустил машину, и мои файлы все еще были там...
YMMV... надеюсь, что это сработает для вас! я на OS X, но я не думаю, что у вас должны быть разные результаты.
J
Ответ 2
Если вы не заботитесь о потере данных, просто выполните команду:
./hadoop namenode -format
Ответ 3
У меня была аналогичная проблема, и это помогло
chown -R hdfs:hadoop /path/to/namenode/date/dir
Ответ 4
Настройка этих свойств в файле 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>
Не забудьте установить правильные разрешения для этих каталогов
Ответ 5
Ответ 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>
Ответ 6
Если вы не решили проблему, попробуйте следующее:
дайте директории dfs.name.dir
в пользовательской группе hadoop
и дайте группе разрешение на запись.
Ответ 7
Смотрите coresite.xml
в каталоге конфигурации hadoop
- Перейдите в каталог конфигурации
-
vi core-site.xml,hdf.site.xml
- Убедитесь, что номера и пути вашего порта верны.
Ответ 8
У меня есть аналогичная проблема, но немного другая.
Запуск start-all.sh достаточно хорошо, но jps показывает, что нет наменоходов, и я не мог видеть список, когда я запускаю hdfs dfs -ls/.
Моя первая попытка - запустить hasoop namenode -format, затем появится namenode, но datanode исчезнет.
После запуска решения, я запустил rm -rf/usr/local/hadoop_store/hdfs/datanode/* и перезапустил hasoop, jps показывает:
12912 ResourceManager
13391 FsShell
13420 Jps
13038 NodeManager
12733 SecondaryNameNode
12432 NameNode
12556 DataNode
Теперь я могу использовать команды hadoop, как обычно.
НТН!