DataNode не запускается в singlenode hadoop 2.6.0

Я установил Hadoop 2.6.0 на свой ноутбук с Ubuntu 14.04LTS. Я успешно запустил демоны hadoop, запустив start-all.sh, и я успешно запустил пример WourdCount, затем я попытался запустить пример jar, который не работал со мной, поэтому я решил отформатировать с помощью hadoop namenode -format и начать все сначала, но когда я запускаю все демоны используя start-dfs.sh && start-yarn.sh, затем запускаются все демоны jps, но не узел данных, как показано ниже:

hdferas@feras-Latitude-E4310:/usr/local/hadoop$ jps
12628 NodeManager
12110 NameNode
12533 ResourceManager
13335 Jps
12376 SecondaryNameNode

Как это решить?


person Firas M. Awaysheh    schedule 20.03.2015    source источник
comment
Это реальный вопрос программирования? Пожалуйста, примите участие в туре   -  person mjs    schedule 20.03.2015


Ответы (10)


Я столкнулся с этой проблемой, и ее очень легко решить. Ваш узел данных не запускается, потому что после запуска вашего узла имени и узла данных вы снова отформатировали узел имени. Это означает, что вы очистили метаданные от namenode. Теперь файлы, которые вы сохранили для запуска подсчета слов, все еще находятся в узле данных, и узел данных не знает, куда отправлять отчеты о блоках, поскольку вы отформатировали узел имен, чтобы он не запускался.

Вот что вам нужно сделать, чтобы исправить это. Остановите все службы Hadoop (stop-all.sh) и закройте все активные соединения ssh.

cat /usr/local/hadoop/etc/hadoop/hdfs-site.xml

Этот шаг важен, посмотрите, где хранятся данные узла данных. Это значение, связанное с datanode.data.dir. Для меня это /usr/local/hadoop/hadoop_data/hdfs/datanode. Откройте свой терминал и перейдите в указанный выше каталог и удалите каталог с именем current, который будет находиться в этом каталоге. Убедитесь, что вы удаляете только «текущий» каталог.

sudo rm -r /usr/local/hadoop/hadoop_data/hdfs/datanode/current

Теперь отформатируйте namenode и проверьте, все ли в порядке.

hadoop namenode -format

скажи да, если он попросит тебя о чем-нибудь.

jps

Надеюсь, мой ответ решит проблему. Если это не даст мне знать.

Небольшой совет: не форматируйте свой namenode. Без namenode невозможно восстановить данные. Если ваш счетчик слов не работает, это какая-то другая проблема.

person Srimanth    schedule 21.03.2015
comment
Спасибо, это помогает. - person living zhang; 13.01.2017
comment
Я все еще не запустил узел данных. - person Ishpreet; 12.08.2017
comment
зачем нужен этот кот hdfs-site.xml? Я решил без кота. и я хочу знать причину, почему это происходит в первую очередь. Для меня причина в том, что я ранее устанавливал hadoop, используя тот же каталог namenode и каталог данных, что и предыдущий запуск (я просто пробую процесс установки). Удаление предыдущего каталога namenode и каталога данных работает без проблем с установкой. - person Junchao Gu; 29.03.2018

Вам просто нужно удалить все содержимое папки DataNode и отформатировать Datanode с помощью следующей команды

hadoop namenode -format
person Piyush Yadav    schedule 03.06.2016

У меня тоже была эта проблема при форматировании namenode. Что я сделал для решения проблемы:

  1. Найдите свое dfs.name.dir местоположение. Рассмотрим, например, ваш dfs.name.dir это /home/hadoop/hdfs.

(а) Теперь перейдите к /home/hadoop/hdfs/current.

(b) Найдите файл VERSION. Откройте его с помощью текстового редактора.

(c) Там будет строка namespaceID=122684525 (122684525 мой ID, у вас будет другой). Запишите идентификатор вниз.

  1. Теперь найдите свое hadoop.tmp.dir местоположение. Мой /home/hadoop/temp.

(a) Go to /home/hadoop/temp/dfs/data/current.

(b) Найдите файл VERSION и откройте его с помощью текстового редактора.

(c) Будет строка namespaceID=. Идентификатор пространства имен в этом и предыдущем файлах должен совпадать.

(d) Это основная причина, по которой мой узел данных не был запущен. Я сделал их одинаковыми, и теперь datanode запускается нормально.

Примечание: скопируйте namespaceID из /home/hadoop/hdfs/current/VERSION в /home/hadoop/temp/dfs/data/current/VERSION. Не делайте этого в обратном порядке.

  1. Теперь сделайте start-dfs.sh && start-yarn.sh. Датанода будет запущена.
person Rajesh N    schedule 24.03.2015
comment
Как найти временный каталог hadoop? Каково его местоположение по умолчанию? - person Ravi.Kumar; 30.01.2017

Даже у меня была такая же проблема, я проверил журнал и нашел ошибку ниже

Исключение — журнал Datanode FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: исключение в secureMain java.io.IOException: все каталоги в dfs.datanode.data.dir недействительны: «/usr/local/hadoop_store/hdfs /узел данных/

Выполните приведенную ниже команду, чтобы решить проблему

sudo chown -R hduser:hadoop /usr/local/hadoop_store

Примечание. Я создал namenode и datanode по пути /usr/local/hadoop_store.

person Vigneshwaran    schedule 06.04.2015
comment
какой файл журнала? Я проверил localhost: запуск datanode, вход в /home/jgu/local/src/hadoop/hadoop-2.7.5/logs/hadoop-jgu-datanode-research3-pc.out, но ничего полезного не увидел - person Junchao Gu; 29.03.2018

Вышеупомянутая проблема возникла из-за форматирования namenode (hadoop namenode -format) без остановки демонов dfs и yarn. При формировании namenode появляется вопрос, указанный ниже, и вы нажимаете клавишу Y для этого. Переформатировать файловую систему в каталоге хранилища /tmp/hadoop-root/dfs/name? (Д или Н)

Решение. Вам необходимо удалить файлы в текущем (имя каталога) каталоге dfs.name.dir, который вы упомянули в hdfs.site.xml. В моей системе dfs.name.dir доступен в /tmp/hadoop-root/dfs/name/current. rm -r /tmp/hadoop-root/dfs/name/current Используя приведенный выше комментарий, я удалил файлы внутри текущего каталога. Убедитесь, что вы удаляете только «текущий» каталог. Снова отформатируйте namenode после остановки демонов dfs и yarn (stop-dfs.sh и stop-yarn.sh). Теперь datanode запустится нормально!!

person Hariprakash Sambath    schedule 30.06.2016

в core-site.xml проверьте абсолютный путь к временному каталогу, если он не указан правильно или не создан (mkdir). Узел данных не может быть запущен.

person dhilip77    schedule 07.03.2016

добавить свойство ниже в yarn-site.xml

<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
<property>
    <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
    <value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
person shridhar mangoji    schedule 25.03.2016

не правильный способ сделать это. но точно работает~

удалите файлы из папки datanode, namenode и tmp. любые файлы/папки, созданные внутри них, принадлежат Hadoop и могут иметь некоторую ссылку на детали узла данных последнего запуска, которые могли выйти из строя или заблокироваться, из-за чего узел данных не запускается при следующей попытке.

person user1332909    schedule 30.03.2016

У меня возникла та же проблема (DataNode и TaskTracker не появлялись).

РЕШЕНИЕ: УДАЛИТЕ ВСЕ "ТЕКУЩИЕ" ПОДКАТАЛОГИ В: data, name и namesecondary, чтобы решить, что DataNode/taskTracker не отображается при запуске -all.sh, затем jps

(Мое местоположение dfs.name.dir: /home/training/hadoop-temp/dfs/data/current; /home/training/hadoop-temp/dfs/name/current; /home/ обучение/hadoop-temp/dfs/namesecondary/current

Убедитесь, что службы остановлены: stop-all.sh

1. Перейдите к каждому "текущему" подкаталогу в data, name, namesecondary и удалите/удалите (пример: rm -r name/current)

2. Затем отформатируйте: hadoop namenode -format

3. текущий mkdir в /home/training/hadoop-temp/dfs/data/current

4. Возьмите каталог и содержимое из /home/training/hadoop-temp/dfs/name/current и скопируйте в каталог /data/current.

ПРИМЕР: файлы в:

/дом/обучение/hadoop-temp/dfs/имя/текущий

[обучение@CentOS текущий]$ ls -l

-рв-рв-р--. 1 тренировка тренировка 9901 25 сен 01:50 редактирует

-рв-рв-р--. 1 тренировка тренировка 582 сен 25 01:50 fsimage

-рв-рв-р--. 1 тренировка тренировка 8 сен 25 01:50 fstime

-рв-рв-р--. 1 тренировка тренировка 101 сен 25 01:50 ВЕРСИЯ

5. Измените storageType=NAME_NODE в VERSION на storageType=DATA_NODE в data/current/VERSION, который вы только что скопировали.

ДО:

[обучение@CentOS dfs]$ cat data/current/VERSION

ID пространства имен = 1018374124

cВремя=0

storageType=NAME_NODE

layoutVersion=-32

ПОСЛЕ:

[обучение@CentOS dfs]$ cat data/current/VERSION

ID пространства имен = 1018374124

cВремя=0

storageType=DATA_NODE

layoutVersion=-32

6. Убедитесь, что в каждом подкаталоге ниже есть те же файлы, что и в name/current для data, name, namesecondary.

[обучение@CentOS dfs]$ pwd

/главная/обучение/hadoop-temp/dfs/

[обучение@CentOS dfs]$ ls -l

всего 12

drwxr-xr-x. 5 обучение обучение 4096 сен 25 01:29 данные

drwxrwxr-х. 5 тренировка тренировка 4096 25 сен 01:19 имя

drwxrwxr-х. 5 обучение обучение 4096 сен 25 01:29 namesecondary

7. Теперь запустите службы: start-all.sh Вы должны увидеть все 5 служб при вводе: jps

person Anthony Crenshaw crenny288    schedule 25.09.2016

Я использую hadoop-2.6.0. Я решил использовать:

1.Удаление всех файлов в /usr/local/hadoop_store/hdfs

команда: sudo rm -r /usr/local/hadoop_store/hdfs/*

2.Формат узла имени Hadoop

команда: hasoop namenode -format

3. Перейдите в каталог ..../sbin (cd /usr/local/hadoop/sbin)

start-all.sh

  1. используйте команду ==> hduser@abc-3551:/$ jps

Теперь будут запущены следующие службы:

19088 Jps
18707 ResourceManager
19043 NodeManager
18535 SecondaryNameNode
18329 DataNode
18159 NameNode
person Ashutosh S    schedule 09.10.2016