Почему возникает проблема несовместимых имен пространства имен Hadoop?
Это довольно хорошо документированная ошибка, и исправление прост, но кто-нибудь знает, почему Hadoop Datanode NamespaceIDs может быть легко запутано или как Hadoop назначает Имена пространства имен при запуске datanodes?
Здесь ошибка:
2010-08-06 12:12:06,900 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Incompatible namespaceIDs in /Users/jchen/Data/Hadoop/dfs/data: namenode namespaceID = 773619367; datanode namespaceID = 2049079249
at org.apache.hadoop.hdfs.server.datanode.DataStorage.doTransition(DataStorage.java:233)
at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:148)
at org.apache.hadoop.hdfs.server.datanode.DataNode.startDataNode(DataNode.java:298)
at org.apache.hadoop.hdfs.server.datanode.DataNode.<init>(DataNode.java:216)
at org.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNode.java:1283)
at org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:1238)
at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:1246)
at org.apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.java:1368)
Кажется, что это случается только для одиночных экземпляров node.
Ответы
Ответ 1
Namenode генерирует новый namespaceID каждый раз, когда вы форматируете HDFS. Я думаю, что это возможно, чтобы отличать текущую версию и предыдущую версию. Вы всегда можете откат к предыдущей версии, если что-то не подходит, что может быть невозможно, если namespaceID не уникален для каждого форматированного экземпляра.
NamespaceID также подключает namenode и datanodes. Datanodes связывают себя с namenode через namespaceID
Ответ 2
эта проблема хорошо объяснена и помогла в следующем fine guide
Ответ 3
Я тоже получал это, а затем я попытался поместить свою конфигурацию в hdfs-site.xml
вместо core-site.xml
.
Кажется, что мы остановимся и начнем без этой ошибки.
[EDIT, 2010-08-13]
На самом деле это все еще происходит, и это вызвано форматированием.
Если вы просматриваете файлы VERSION при форматировании, вы увидите (по крайней мере, я), что namenode получает новый идентификатор namespaceID, но данные node этого не делают.
Быстрое решение - удалить VERSION для datanode перед форматированием.
[TIDE, 2010-08-13]
Ответ 4
Когда я отформатировал свой HDFS, я также столкнулся с этой ошибкой. Помимо того, что datanode не запускается, jobtracker также не запускается.
Для datanode я вручную изменил namespaceid; но для jobtracker нужно создать каталог /mapred/system (as hdfs user) и изменить его владельца на mapred. После форматирования программа jobtracker должна начать работать.
Ответ 5
Я получил следующую ошибку: "Несовместимые идентификаторы имен в /home/hadoop/data/dn ",
У меня есть четыре узла данных в кластере, после запуска start -dfs.sh используется только один тип данных, поэтому решение заключалось в прекращении обслуживания в nn и jt и удалении dn конфигурации drom hdfs-сайта во всех datanodes, удалите dn файл (/home/hadoop/data/dn) и отформатируйте namenode.
Затем снова добавьте свойства datanode в hdfs-сайт во всех datanodes и форматируйте namenode onceagain. попробуйте запустить сервисы, теперь все узлы данных наверняка будут