Iniciarse en Apache Spark (II): Despliegue de un Clúster


Hace unos días vimos la instalación de Spark y sus directorios más significativos, pero nos quedamos a las puertas de “mordor” (sí, ahora viene lo interesante): Desplegar un clúster de máquinas para el procesamiento distribuido. ¡QUE EMPIECE EL JUEGO!

1. El entorno

Para poder realizar el ejemplo necesitaremos (como era de intuir), dos máquinas: una que hará de máquina maestra y otra que ejercerá de esclavo (worker). Para ello, yo he decidido usar dos máquinas virtuales con las siguientes características:

  • Ubuntu 14.04 de 32bits.
  • 2Gb de memoria RAM.
  • 1 Core por máquina.
  • 15 GB de disco duro.
  • Red NAT (aunque de momento se usará modo Bridge hasta que se tengan descargado los archivos necesarios 😉 ).

2. Las conexiones entre máquinas

Uno de los pasos más importantes en el despliegue del clúster es posibilitar al nodo maestro de tal forma que pueda conectarse sin credenciales a los nodos esclavos usando ssh (el proceso se puede ver en esta entrada).

NOTA: Para poder hacer este paso, las dos máquinas tendrán que encontrarse en la misma red (adaptador en modo NAT).

3. Instalar Spark y Scala

En todas las máquinas que formarán parte del clúster tendrán que tener instaladas las tecnologías que se van a usar (un poco obvio, ¿no? 😄 ), por lo que habrá que tener instalado tanto Spark como Scala (vistos en entradas anteriores).

4. Configurando el clúster

Después de haber instalado lo necesario y compartido las claves RSA, es la hora de crear literalmente el clúster. Si echamos un vistazo rápido a la entrada de instalación de Spark, hablábamos de los directorios más importantes, entre los cuales estaba el directorio conf. En este directorio podemos encontrar en forma de plantilla los diferentes archivos para configurar el clúster; En nuestro caso, haremos uso de los archivos slaves y spark-env.sh, renombrándolos y eliminando el “.template”.

El archivo slaves contiene en forma de lista todas las direcciones IP de los nodos esclavos que formarán parte del clúster, de tal forma que, al tener sólo un nodo esclavo, contendrá solo dicha dirección IP.

En el archivo spark-env.sh es donde realmente se configurarán todos los parámetros y configuraciones del clúster. Aunque existen bastantes parámetros, para esta primera toma de contacto vamos a trabajar con 4:

  1. SPARK_MASTER_IP: Dirección IP del nodo maestro
  2. SPARK_WORKER_CORES: Núcleos de cada nodo esclavo
  3. SPARK_WORKER_MEMORY: Memoria RAM que aporta cada esclavo al cluster
  4. SPARK_WORKER_INSTANCES: Instancias de cada esclavo.

Después de conocer los parámetros que vamos a configurar, los añadimos al fichero de tal forma que quedará algo de este estilo:

export SPARK_MASTER_IP=192.168.75.139
export SPARK_WORKER_CORES=1
export SPARK_WORKER_MEMORY=800m
export SPARK_WORKER_INSTANCES=2

NOTA: Este paso se ha de hacer en todas las máquinas que compondrán el clúster. Para ahorrar trabajo “de chinos”, mi recomendación es perder unos minutos en hacer scripts para automatizar todo el proceso 😛

5. Despertando al monstruo

Otro de los directorios que nombrábamos en la instalación de Spark es sbin, en cuyo interior podemos encontrar los scripts que permiten levantar, tumbar o reiniciar el clúster (completo, el maestro o los esclavos). Para levantar el clúster (desde el nodo maestro), lanzamos el script start-all:

./start-all.sh

Hecho esto accedemos a la dirección “localhost:8080“, donde tendremos acceso a la interfaz de gestión del clúster:

Como se puede ver en la captura, se han levantado dos instancias (Alive Workers), con un core cada uno (2 en total) y 800m de memoria cada una (total de 1600m). Además, se puede observar las direcciones y los identificadores de cada esclavo.

Resumiendo…

  1. Instalar Spark & Scala
  2. Generar y compartir clave RSA
  3. Configuración de la plantilla slaves.
  4. Configuración de la plantilla Spark-Env.sh
  5. Levantar Clúster

Y Tú…

  • ¿Has podido seguir todos los pasos?
  • ¿Te ha resultado complicado?
  • ¿Se te ocurre alguna forma de automatizar todo el proceso?

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s