Datanode не работает в Hadoop на одном компьютере

Я установил и настроил среду sudo node hadoop на ubuntu 12.04 LTS, используя следующий учебник http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-multi-node-cluster/#formatting-the-hdfs-filesystem-via-the-namenode.

После ввода hadoop / bin $ start-all.sh все идет нормально, я проверил Jps, затем были запущены NameNode, JobTracker, TaskTracker, SecondaryNode, но DataNode не запущен ...

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


person Jaipal R    schedule 25.10.2012    source источник


Ответы (1)


я решил это ...

java.io.IOException: несовместимые идентификаторы пространства имен

Если вы видите ошибку java.io.IOException: Incompatible namespaceIDs в журналах DataNode (logs / hadoop-hduser-datanode-.log), скорее всего, вы столкнулись с проблемой HDFS-107 (ранее известной как HADOOP-1212) .

Полная ошибка на моих машинах выглядела так: ... ОШИБКА org.apache.hadoop.dfs.DataNode: java.io.IOException: несовместимые идентификаторы пространства имен в / app / hadoop / tmp / dfs / data: namenode namespaceID = 308967713; datanode namespaceID = 113030094 в org.apache.hadoop.dfs.DataStorage.doTransition (DataStorage.java:281) в org.apache.hadoop.dfs.DataStorage.recoverTransitionRead (DataStorage.java:121) в org.apache.hadoop.dfs .DataNode.startDataNode (DataNode.java:230) в org.apache.hadoop.dfs.DataNode. (DataNode.java:199) в org.apache.hadoop.dfs.DataNode.makeInstance (DataNode.java:1202) в org .apache.hadoop.dfs.DataNode.run (DataNode.java:1146) в org.apache.hadoop.dfs.DataNode.createDataNode (DataNode.java:1167) в org.apache.hadoop.dfs.DataNode.main (DataNode .java: 1326) На данный момент, похоже, есть два обходных пути, описанных ниже.

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

Остановите кластер. Удалите каталог данных на проблемном DataNode: каталог указан dfs.data.dir в conf / hdfs-site.xml; Если вы следовали этому руководству, соответствующий каталог - / app / hadoop / tmp / dfs / data. Переформатируйте NameNode (ПРИМЕЧАНИЕ: все данные HDFS теряются во время этого процесса!) Перезапустите кластер. При удалении всех данных HDFS и запуске с нуля выполняется звучит не как хорошая идея (это может быть нормально во время начальной настройки / тестирования), вы можете попробовать второй подход.

Обходной путь 2: Обновление namespaceID проблемных DataNodes Большое спасибо Джареду Стеллеру за следующее предложение. Я сам еще не тестировал, но не стесняйтесь попробовать и присылайте мне свой отзыв. Этот обходной путь является «минимально инвазивным», поскольку вам нужно отредактировать только один файл на проблемных DataNodes:

Остановить DataNode. Отредактируйте значение namespaceID в / current / VERSION, чтобы оно соответствовало значению текущего NameNode. Перезапустите DataNode. Если вы следовали инструкциям из моих руководств, полный путь к соответствующим файлам будет следующим:

NameNode: / app / hadoop / tmp / dfs / name / current / VERSION DataNode: / app / hadoop / tmp / dfs / data / current / VERSION (background: dfs.data.dir по умолчанию установлен на $ {hadoop.tmp .dir} / dfs / data, и в этом руководстве мы установили для hadoop.tmp.dir значение / app / hadoop / tmp).

Решение проблемы четко указано на следующем сайте:

http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-multi-node-cluster/#java-io-ioexception-incompatible-namespaceids

person Jaipal R    schedule 25.10.2012
comment
Вы узнали, в чем причина? Я сам получил эту ошибку при изменении параметров dfs. * В hdfs-site.xml. Есть ли какое-то общее правило? Можно ли предотвратить эту ошибку? - person rretzbach; 26.10.2012
comment
@rretzbach, это не проблема, если вы устанавливаете HDFS, вам нужно сначала отформатировать его. Прямо как жесткий диск. Не устанавливайте на tmp-раздел, потому что он будет стираться при каждом перезапуске, поэтому вам придется каждый раз переформатировать свой namenode. - person Thomas Jungblut; 26.10.2012