para - ubuntu font
Hay 0 datanode(s) en ejecución y no se excluye ningún nodo en esta operación (11)
¿Has intentado borrar la carpeta / tmp.
Antes de la limpieza no apareció un datanode
86528 SecondaryNameNode
87719 Jps
86198 NameNode
78968 RunJar
79515 RunJar
63964 RunNiFi
63981 NiFi
Despues de limpiar
sudo rm -rf /tmp/*
Funciono para mi
89200 Jps
88859 DataNode
He configurado un clúster Hadoop multi nodo. NameNode y Secondenode se ejecutan en la misma máquina y el clúster solo tiene un Datanode. Todos los nodos están configurados en las máquinas de Amazon EC2.
Los siguientes son los archivos de configuración en el nodo maestro:
masters
54.68.218.192 (public IP of the master node)
slaves
54.68.169.62 (public IP of the slave node)
core-site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop_store/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.name.dir</name>
<value>file:/usr/local/hadoop_store/hdfs/datanode</value>
</property>
</configuration>
Ahora están los archivos de configuración en el datanode:
core-site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://54.68.218.192:10001</value>
</property>
</configuration>
mapred-site.xml
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>54.68.218.192:10002</value>
</property>
</configuration>
hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop_store/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.name.dir</name>
<value>file:/usr/local/hadoop_store/hdfs/datanode</value>
</property>
</configuration>
Los jps ejecutados en el Namenode dan lo siguiente:
5696 NameNode
6504 Jps
5905 SecondaryNameNode
6040 ResourceManager
y jps en datanode:
2883 DataNode
3496 Jps
3381 NodeManager
lo que a mi me parece correcto.
Ahora cuando intento ejecutar un comando put:
hadoop fs -put count_inputfile /test/input/
Me da el siguiente error:
put: File /count_inputfile._COPYING_ could only be replicated to 0 nodes instead of minReplication (=1). There are 0 datanode(s) running and no node(s) are excluded in this operation.
Los registros en el datanode dicen lo siguiente:
hadoop-datanode log
INFO org.apache.hadoop.ipc.Client: Retrying connect to server: 54.68.218.192/54.68.218.192:10001. Already tried 8 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS)
registro de hilo-nodemanager
INFO org.apache.hadoop.ipc.Client: Retrying connect to server: 0.0.0.0/0.0.0.0:8031. Already tried 9 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS)
La interfaz de usuario web del gestor de nodos (50070) muestra que hay 0 nodos activos y 0 nodos muertos y que los dfs utilizados son 100%
También he deshabilitado IPV6.
En algunos sitios web descubrí que también debería editar el /etc/hosts
. También los he editado y se ven así:
127.0.0.1 localhost
172.31.25.151 ip-172-31-25-151.us-west-2.compute.internal
172.31.25.152 ip-172-31-25-152.us-west-2.compute.internal
¿Por qué sigo recibiendo el error?
1) Detenga todos los servicios primero usando el comando stop-all.sh
2) Elimine todos los archivos dentro de datanode rm -rf / usr / local / hadoop_store / hdfs / datanode / *
3) Luego inicie todos los servicios usando el comando start-all.sh
Puedes verificar si todos tus servicios se están ejecutando usando el comando jps
Espero que esto funcione!
@Aprendiz,
Tuve este problema de datanodes que no se muestra en la interfaz de usuario web de Namenode. Resuelto por estos pasos en Hadoop 2.4.1.
hacer esto para todos los nodos (maestros y esclavos)
1. elimine todos los archivos temporales (por defecto en / tmp) - sudo rm -R /tmp/*
.
2. Ahora intente conectarse a todos los nodos a través de ssh
usando ssh username@host
y agregue claves en su maestro usando ssh-copy-id -i ~/.ssh/id_rsa.pub username@host
para dar acceso sin restricciones de esclavos al maestro (no hacerlo puede ser el problema para rechazar las conexiones).
3. Formatee el namenode usando hadoop namenode -format
e intente reiniciar los demonios.
Dos cosas me funcionaron,
PASO 1: detenga hadoop y limpie los archivos temporales de hduser
sudo rm -R /tmp/*
Además, es posible que deba eliminar y volver a crear /app/hadoop/tmp
(principalmente cuando cambio la versión de hadoop de 2.2.0
a 2.7.0
)
sudo rm -r /app/hadoop/tmp
sudo mkdir -p /app/hadoop/tmp
sudo chown hduser:hadoop /app/hadoop/tmp
sudo chmod 750 /app/hadoop/tmp
PASO 2: formato namenode
hdfs namenode -format
Ahora, puedo ver DataNode
hduser@prayagupd:~$ jps
19135 NameNode
20497 Jps
19477 DataNode
20447 NodeManager
19902 SecondaryNameNode
20106 ResourceManager
El valor de la propiedad {fs.default.name} en core-site.xml, tanto en la máquina principal como en la secundaria, debe apuntar a la máquina principal. Así será algo así:
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
donde maestro es el nombre de host en el archivo / etc / hosts que apunta al nodo maestro.
En mi situación, el servicio firewalld se estaba ejecutando. Estaba en la configuración por defecto. Y no permite la comunicación entre nodos. Mi clúster hadoop era un clúster de prueba. Debido a esto, detuve el servicio. Si sus servidores están en producción, debe permitir puertos hadoop en firewalld, en lugar de
service firewalld stop
chkconfig firewalld off
En mi situación, me faltaban las propiedades necesarias dentro de hdfs-site.xml
(Hadoop 3.0.0) instalado usando HomeBrew en MacOS. (El file:///
no es un error tipográfico).
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///usr/local/Cellar/hadoop/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///usr/local/Cellar/hadoop/hdfs/datanode</value>
</property>
Probablemente se deba a que el ID de clúster de los datanodes y los namenodes o el administrador de nodos no coinciden. El ID de clúster se puede ver en el archivo VERSION que se encuentra tanto en el namenode como en los datanodes.
Esto sucede cuando formatea su namenode y luego reinicia el clúster, pero los códigos de datos aún intentan conectarse utilizando el clusterID anterior. para estar conectado correctamente, necesita la dirección IP correcta y también una ID de clúster coincidente en los nodos.
Así que intente reformatear el namenode y datanodes o simplemente configure los datanodes y namenode en las carpetas recién creadas.
Eso debería resolver tu problema.
Eliminar los archivos de la carpeta actual de datanodes también eliminará el antiguo archivo VERSION y solicitará un nuevo archivo VERSION mientras se vuelve a conectar con el namenode.
Ejemplo de que el directorio de datanode en la configuración es / hadoop2 / datanode
$ rm -rvf /hadoop2/datanode/*
Y luego reinicie los servicios. Si reformatea su namenode, hágalo antes de este paso. Cada vez que reformatees tu namenode obtiene una nueva ID y esa ID se genera aleatoriamente y no coincidirá con la ID antigua en tus datanodes
Así que cada vez sigue esta secuencia
Si formatea namenode, elimine el contenido del directorio de datanode O configure datanode en el directorio creado recientemente. Luego, inicie su namenode y los datanodes.
Solución de @mustafacanturk, deshabilitar el firewall funcionó para mí. Pensé que los datanodes se iniciaron porque aparecieron cuando se ejecutaban jps, pero al intentar cargar archivos recibía el mensaje "0 nodos en ejecución". De hecho, ni la interfaz web para ( http: // nn1: 50070 ) estaba funcionando debido al firewall. Deshabilité el firewall cuando instalé hadoop, pero por alguna razón estaba apagado. Sin embargo, a veces no era necesario limpiar o recrear las carpetas temporales (hadoop.tmp.dir) o incluso las carpetas dfs.data.dir y dfs.namenode.name.dir y reformar el servidor de nombres era la solución.
Tuve el mismo error. No tenía permiso para el sistema de archivos hdfs. Así que le doy permiso a mi usuario:
chmod 777 /usr/local/hadoop_store/hdfs/namenode
chmod 777 /usr/local/hadoop_store/hdfs/datanode
Tuve el mismo problema después de un apagado incorrecto del nodo. También se verificó en la interfaz de usuario que el datanode no está en la lista.
Ahora está funcionando después de eliminar los archivos de la carpeta datanode y reiniciar los servicios.
stop-all.sh
rm -rf / usr / local / hadoop_store / hdfs / datanode / *
start-all.sh