He configurado un entorno Hadoop distribuido dentro de VirtualBox: 4 instalaciones virtuales de Ubuntu 11.10, una que actúa como nodo maestro y las otras tres como esclavas. Seguí this tutorial para poner en funcionamiento la versión de un solo nodo y luego convertirla a la versión completamente distribuida. Estaba funcionando bien cuando estaba ejecutando 11.04; sin embargo, cuando actualicé a 11.10, se rompió. Ahora los registros de todos mis esclavos muestran el mensaje de error, que se repite hasta la saciedad:Hadoop Datanodes no puede encontrar NameNode
INFO org.apache.hadoop.ipc.Client: Retrying connect to server: master/192.168.1.10:54310. Already tried 0 time(s).
INFO org.apache.hadoop.ipc.Client: Retrying connect to server: master/192.168.1.10:54310. Already tried 1 time(s).
INFO org.apache.hadoop.ipc.Client: Retrying connect to server: master/192.168.1.10:54310. Already tried 2 time(s).
Y así sucesivamente. He encontrado otras instancias de este mensaje de error en Internet (y StackOverflow) pero ninguna de las soluciones ha funcionado (intenté cambiar las entradas core-site.xml y mapred-site.xml para que sean la dirección IP en lugar del nombre de host; cuádruple -comprobado /etc/hosts
en todos los esclavos y maestro; maestro puede SSH sin contraseña en todos los esclavos). Incluso traté de revertir cada esclavo a una configuración de un solo nodo, y todos funcionarían bien en este caso (en esa nota, el maestro siempre funciona bien como un Datanode y el Namenode).
El único síntoma que he encontrado que parece dar una pista es que de cualquiera de los esclavos, cuando intento un telnet 192.168.1.10 54310
, obtengo Connection refused
, sugiriendo que hay algún acceso de bloqueo de reglas (que debe haber entrado en vigor cuando actualicé a 11.10).
Mi /etc/hosts.allow
no ha cambiado, sin embargo. Probé la regla ALL: 192.168.1.
, pero no cambió el comportamiento.
Oh sí, y netstat
en el maestro muestra claramente que están escuchando los puertos 54310 y 54311 de tcp.
¿Alguien tiene alguna sugerencia para que los esclavos Datanodes reconozcan el Namenode?
editar # 1: Al hacer un poco de hurgar con nmap (véanse los comentarios de esta entrada), estoy pensando en el problema está en mis archivos /etc/hosts
. Esto es lo que se muestra para el maestro VM:
127.0.0.1 localhost
127.0.1.1 master
192.168.1.10 master
192.168.1.11 slave1
192.168.1.12 slave2
192.168.1.13 slave3
Para cada esclavo VM:
127.0.0.1 localhost
127.0.1.1 slaveX
192.168.1.10 master
192.168.1.1X slaveX
Por desgracia, no estoy seguro de lo que he cambiado, pero el NameNode está siempre muriendo con la excepción de intentar vincular un puerto "que ya está en uso" (127.0.1.1:54310). Claramente estoy haciendo algo mal con los nombres de host y las direcciones IP, pero realmente no estoy seguro de qué se trata. ¿Pensamientos?
¿Está ejecutando un firewall? Además, ¿el IP del Maestro sigue siendo 192.168.1.10? Preguntas estúpidas, pero a veces las personas pierden lo obvio. –
Instala gufw usando el comando 'sudo apt-get install gufw' y verifica la configuración del firewall. También verifique el [tipo de conexión de red] (http://www.virtualbox.org/manual/ch06.html) en [VirtualBox] (http://www.virtualbox.org/manual/ch06.html). –
'¿Alguien tiene alguna sugerencia para que los esclavos Datanodes reconozcan el Namenode?' - ¿Esto es más una consulta de Ubuntu que una de Hadoop? Debería ser 'cómo hacer que las máquinas virtuales esclavas hablen con la máquina virtual maestra'. –