я решил это ...
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