lunes, mayo 19, 2014

Instalando Hadoop en modo distribuido

Hadoop "Fully Distributed"

Aunque pueda asustar, la instalación de un sistema distribuido de Hadoop no es tan complicado como pueda parecer. En realidad, siguiendo el tutorial sobre como instalarlo en modo pseudo-distribuido ya tenemos la mayor parte del trabajo hecho: Instalando Hadoop en modo pseudo-distribuido

Las diferencias  mas simples entre el modo distribuido y el modo pseudo distribuido son las siguientes:
  1. El nodo NameNode debe poder acceder por SSH sin contraseña a todos los nodos esclavos y a si mismo. (no es necesario que los nodos esclavos puedan acceder al nodo maestro).
  2. Todos los nodos deben compartir la misma configuración de Hadoop (el contenido de "conf", "etc/conf", o "/etc/hadoop" dependiendo de la versión).
  3. La reglas de Firewall deben permitir la comunicación via TCP entre todos los tipos de nodos en modo bidireccional

Comenzando

Lo primero, vamos a usar dos portátiles que vamos a llamar E1 y E2. Tenemos que instalar Hadoop en los dos equipos como si fuera modo pseudo-distribuido usando el tutorial del link anterior. Ahora lo importante es cambiar las direcciones IP's por direcciones reales dentro de nuestra LAN por lo que, si nuestro localhost es el 192.168.1.10 dentro de nuestra LAN, tendremos que usar esta IP.

Una vez tengamos los dos equipos con Hadoop en modo pseudo-distribuido vamos a ver como dividimos las tareas entre los dos equipos:
  1. E1: El equipo 1 va a ser el nodo "Maestro", por tanto vamos a tener en ejecución los siguientes hilos:
    1. Namenode
    2. SecondaryNamenode
    3. JobTracker
  2. E3: El Equipo 2 va a ser el nodo "Worker" por lo que las tareas en ejecución serán las siguientes:
    1. TaskTracker
    2. DataNode
Entraremos a la consola del E1, nuestra IP es 192.168.1.10. Vamos a editar, dentro de la carpeta de Hadoop, el fichero de configuración de esclavos donde vamos a indicar la IP del E2 (192.168.1.20). Dicho fichero lo encontraremos en conf/slaves:

192.168.1.20
Además, también hay que indicar la máquina que va a tener el SecondaryNamenode, para ello tenermos que editar el fichero conf/masters para agregrar la nuestra IP (la IP del E1):

192.168.1.10

NOTA: Aunque el fichero se llame "masters", no indica las máquinas donde se van a alojar el NameNode ni el Jobtracker, quedando estas configuraciones a disposición del fichero mapred-site.xml y del nodo que arranque el NameNode (en nuestro caso será el E1)

Configurar el acceso SSH

El E1 debe tener acceso por SSH sin contraseña al E2 y a sí mismo. Si aún no sabes como conseguir esto, está todo explicado en el tutorial para instalar Hadoop en modo pseudo-distribuido.

Configurar el mapred-site y el hdfs-site

Ahora, tendremos que tener comunes los ficheros hdfs-site y mapred-site a lo largo de nuestro cluster. En mi experiencia he encontrado bastante sencilla la sincronización a través de un repositorio git como puede ser Github pero cualquier solución es igualmente válida:







	
		dfs.replication
		2
	







    mapred.job.tracker
    192.168.1.10:54311




En el primero, el hdfs, estamos diciéndole que cada bloque de información lo duplique a lo largo del cluster (dfs-replication=2). En el segundo le estamos pasando la IP del E1 que es el que va a ejecutar el JobTracker.

Arrancando el cluster

Por último, hay que arrancar el cluster, desde el E1 y el directorio de instalación de Hadoop ejecutaremos:

NameNode
JobTracker
SecondaryNameNode

Y, si nos vamos al E2, podremos ver los siguientes:
DataNode
TaskTracker

Si resulta que te encuentras el Datanode y el Tasktracker dentro de la E1 es probablemente porque todavía conservas la IP de1 dentro del fichero conf/slaves.

Siguientes pasos, ¡instalar Hadoop en todas las máquinas que tenga por casa!

0 comentarios:

Publicar un comentario