2010-08-06 6 views
15

Este es un error bastante bien documentado y la solución es fácil, pero ¿alguien sabe por qué Hadoop datanode NamespaceIDs se pueden estropear tan fácilmente o cómo Hadoop asigna los NamespaceIDs cuando inicia los datanodes?¿Por qué se produce el problema de Hidesop incompatible namespaceIDs?

Aquí está el error:

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) 

Esto parece ocurrir incluso para casos de nodo único.

+1

¿podría decirnos cuál es la solución ????? – Bohdan

+1

De un enlace a continuación, pero esto es para la sección específica de la guía que describe la solución: http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-multi-node-cluster/# javaioioexception-incompatible-namespaceids – Curtis

+0

Esta es la razón por la cual: "Cuando el nombre-nodo reformatea genera un nuevo namespaceID. Ahora, si el clúster comienza con el nombre-nodo reformateado, y no formatea los nodos de datos , los nodos de datos fallarán con java.io.IOException: IDs de espacio de nombres incompatibles "https://issues.apache.org/jira/browse/HDFS-107 –

Respuesta

17

NameNode genera nuevas namespaceID cada vez que se formatea HDFS. Creo que es posible diferenciar la versión actual y la versión anterior. Siempre puede retroceder a la versión anterior si algo no es correcto, lo que puede no ser posible si namespaceID no es exclusivo para cada instancia formateada.

NamespaceID también conecta namenode y datanodes. DataNodes se obligan a NameNode través namespaceID

+0

gracias por la respuesta. ¿Alguna idea de cómo eliminar esta incoherencia? – Tariq

5

Estaba obteniendo esto también, y luego traté de poner mi configuración en hdfs-site.xml en lugar de core-site.xml.

Parece que se detiene y comienza sin ese error ahora.

[EDIT, 2010-08-13]

En realidad esto se sigue pasando, y es causada por formato.

Si ve los archivos VERSION cuando hace un formato, verá (al menos yo) que al namenode se le asigna un nuevo namespaceID, pero el nodo de datos no.

La solución rápida es eliminar la VERSIÓN para el nodo de datos antes del formato.

[TIDE, 2010-08-13]

+0

muy interesante .... y no tiene ningún error después de un formato namenode y reiniciar? – Jieren

+0

gracias, quitando VERSIÓN ayudado – dmytrivv

+0

donde se define VERSIÓN? – lizzie

8

este problema se explica bien y ayudó en la siguiente fine guide

+0

Es una buena guía y explica cómo solucionar el problema, pero no qué lo causa ni cómo evitarlo ... aunque sí lo vincula al informe de error. https://issues.apache.org/jira/browse/HDFS-107 anteriormente conocido como http://issues.apache.org/jira/browse/HADOOP-1212 – DNA

0

Cuando di formato a mis HDFS También me encontré con este error. Además de que el nodo de datos no está comenzando, el jobtracker tampoco se iniciará. Para el nodo de datos, cambié manualmente el espacio de nombres; pero para el jobtracker uno tiene que crear el directorio/mapred/system (como usuario hdfs) y cambiar su propietario a mapred. El jobtracker debería comenzar a ejecutarse luego después del formato.

+0

¿Cómo cambiaste la ID del espacio de nombres? –

0

tengo el siguiente error "namespaceIDs incompatibles en/home/hadoop/datos/dn",

Tengo cuatro nodos de datos del cluster, después de comenzar start-dfs.sh único DataNode utilizado para llegar Entonces, la solución fue detener el servicio en nn y jt y eliminar la configuración dn drom hdfs-site en todos los nodos de datos, eliminar el archivo dn (/ home/hadoop/data/dn) y formatear el namenode. A continuación, agregue nuevamente las propiedades del nodo de datos en hdfs-site en todos los nodos de datos y vuelva a formatear namenode una vez. intente iniciar servicios ahora todos los nodos de datos estarán seguros seguramente

Cuestiones relacionadas