Disclaimer: En este articulo no me quiero extender ni quiero entrar en profundidad en las opciones que ofrece Amazon AWS EMR, sino que quiero ofrecer una guía rápida de introducción a esta herramienta.
¿Que es Amazon AWS EMR?
EMR, Elastic-Map-Reduce es una plataforma dentro de Amazon Web Services (AWS) que permite de forma sencilla gestionar entornos de trabajo Big Data como Apache Hadoop o Apache Spark. El funcionamiento principal es bastante sencillo, EMR permite crear clusters de instancias EC2, ya «precocinadas» para trabajar sobre Hadoop, Spark u otras herramientas. De este modo con unos pocos clics podemos tener a nuestra disposición un entorno de análisis Big Data.
Crear nuestro primer cluster
Una vez dentro de Amazon AWS, accedemos al panel de control de EMR mediante el menu de servicios.
Una vez en el panel de administración de EMR nos encontramos con un listado principal con el histórico de clusters creados (que si es nuestra primera vez aparecerá vacío) y a la izquierda un menú con diferentes opciones y herramientas.
Mediante el botón azul «Create cluster» iniciamos el proceso de crear nuestro cluster de instancias, que nos abre una pantalla con las opciones más básicas.
Con este sencillo formulario ya sería suficiente para crear un cluster con el que trabajar. Los campos más relevantes a tener en cuenta, son las aplicaciones que queremos incluir y las llaves de acceso EC2. Los demás campos no dejan de ser relevantes, pero en general con los valores por defecto, inicialmente, podemos trabajar sin problemas.
Creo conveniente acceder a las opciones avanzadas que nos permite entre otras, definir en detalle que aplicaciones vamos a incluir, y configurar acciones de arranque de las instancias. Para ello utilizamos el enlace «Go to advanced options» que aparece en la parte superior de la pantalla.
Tal como se muestra en la imágen anterior, al escoger utilizar las opciones avanzadas, se nos abre un proceso de 4 pasos para poder configurar en detalle nuestro cluster EMR.
Paso 1: Software y pasos
Este paso es quizás el que me hace decantarme por seleccionar las opciones avanzadas en el momento de crear un cluster. Y es que tal y como vemos en la imagen anterior, nos permite seleccionar en detalle que grupo de aplicaciones queremos que se incluyan con un simple click. Pese a que tal y como veremos en el paso 3, podemos automatizar instalaciones de programas y librerías al arrancar el cluster. Esta opción permite tener las aplicaciones instaladas con un sólo «check», lo cual no deja de ser muy cómodo.
Otra opción interesante que se puede escoger en este paso, es la versión de EMR. Según la versión que escojamos, los siguientes pasos contarán con unas opciones u otras.
Paso 2: Hardware
En función del tipo de proyecto que vayamos a realizar, es importante trabajar con instancias de diferentes propiedades dentro del cluster. En este paso se nos permite seleccionar los tipos de instancias con las que queremos formar el cluster.
Además, como opción interesante de este paso, se nos ofrece la posibilidad de activar y gestionar el autoescalado de instancias. Según la versión de EMR que hayamos escogido en el primer paso, en este punto tenemos dos opciones.
- Gestión del escalado administrado por EMR: Esta opción la podemos encontrar desde EMR 5.30.0, y permite aumentar o disminuir el número de instancias automáticamente en función de la carga de trabajo.
- Crear reglas personalizadas de escalado: Esta opción más clásica nos permite definir reglas para aumentar o disminuir el número de instancias. En mi caso suelo trabajar con las opciones por defecto, definiendo estas reglas en función de la memoria disponible que nos indique el YARN.
Paso 3: Opciones generales del cluster
En el tercer paso de la creación de nuestro cluster EMR, se nos permite definir las opciones más genéricas, como en que ruta de S3 queremos guardar los datos de la instancia, si queremos cifrar el log resultante o no…
De estas opciones, voy a destacar las dos últimas que se muestran:
Utilizar una AMI personalizada: A partir de la versión 5.7.0 de EMR, se puede escoger una AMI que haya sido preconfigurada anteriormente. Esto permite simplificar el trabajo inicial de la instancia por lo que nos ahorramos bastante tiempo.
Acciones de arranque (Bootstrap actions): Esta opción nos permite seleccionar un archivo que tengamos almacenado en S3 y ejecutarlo en el arranque del cluster. Esta opción es sobretodo interesante para automatizar la instalación de por ejemplo librerias que no estén por defecto incluidas.
#!/bin/bash
sudo python3 -m pip install pandas
sudo python3 -m pip install matplotlib
sudo python3 -m pip install s3fs
sudo python3 -m pip install nltk
Paso 4: Seguridad
Por último, en este paso se definen las opciones de seguridad del cluster. La más importante de estas, es seleccionar un par de claves de las que se utilizan en Amazon EC2. Con ello se puede acceder por SSH al nodo Master y a los nodos esclavos para poder interactuar con ellos.
Finalmente con el botón «crear cluster» se iniciará el cluster con las opciones que hemos definido en los pasos anteriores. A partir de ahora si queremos crear un cluster con las mismas especificaciones, en el dashboard de EMR, tenemos que seleccionar un el cluster con las especificaciones que nos interese y clonarlo.
1 Comments