Automatización de Clústeres EMR con Plantillas de CloudFormation
Clase 32 de 52 • Curso de Big Data en AWS
Resumen
¿Cómo desplegar un clúster EMR de manera automatizada?
Desplegar un clúster EMR (Elastic MapReduce) de forma automatizada es una práctica esencial en entornos productivos. Utilizar infraestructuras como código facilita la repetición y configuración de los procesos, reduciendo el esfuerzo de administración. Vamos a explorar cómo lograrlo a través de una plantilla de CloudFormation.
¿Qué es una plantilla de CloudFormation?
Una plantilla de CloudFormation es un recurso de AWS que permite definir la infraestructura y servicios que se desean implementar. Dentro de ésta, se describe cada componente de una estructura tecnológica, y se configura para implementar un clúster EMR de manera automatizada:
-
Región y nombre del ambiente: Se define la región donde el clúster se desplegará, junto con un nombre para identificar el entorno.
-
Subredes y VPCs: Dependiendo del entorno (público o privado), se determinan las subredes y VPCs donde el clúster operará, permitiendo flexibilidad al modificar directamente las subredes o usar mapeos predefinidos.
¿Cómo gestionar los steps?
Los "steps" son acciones o comandos que se ejecutan secuencialmente dentro del clúster. En el código de infraestructura, estos steps están organizados con las siguientes reglas:
-
Dependencia: Un step no comenzará hasta que el anterior finalice, asegurando un flujo de trabajo coherente.
-
Acciones en caso de fallo: Se determina la respuesta del clúster si un step falla, como continuar con la ejecución o cancelar operaciones subsiguientes.
-
Argumentos adicionales: Se pueden incluir directorios específicos o ejecuciones puntuales personalizadas.
¿Cómo configurar las instancias del clúster?
En la plantilla, se especifica la cantidad y tipos de instancias, abarcando desde instancias master hasta instancias type core, todas con capacidad de demanda on demand. Además, aspectos como el tamaño y nombre de las instancias se determinan según necesidades específicas. Entre otros detalles, se incluyen:
-
Subred de las instancias: Se puede definir usando directamente el ID de la subred o referenciar mapeos que obtengan el ID adecuado según el entorno.
-
Seguridad y conexiones: La plantilla incluye configuraciones predeterminadas para grupos de seguridad, diferenciando entre desplegues en subredes públicas y privadas, y contemplando el uso de llaves SSH para conexión a instancias master.
-
Bootstrap actions: Acciones que se ejecutan antes de que el clúster esté activo, como el uso de scripts localizados en buckets S3.
¿Qué aplicaciones y configuraciones adicionales se pueden incluir?
El clúster EMR es altamente configurable. Aquí algunos aspectos que se pueden personalizar:
-
Aplicaciones instaladas: Se define qué aplicaciones instalar, como Zeppelin, Hadoop, Spark, especificando versiones que dependen de la versión del EMR.
-
Configuraciones de logs y Java: Es posible definir configuraciones específicas de logs y ajustar la versión de Java (p. ej., Java 1.8 en este caso).
-
Roles y etiquetas: Se especifican los roles que el clúster utilizará por defecto y las etiquetas que ayudarán a identificar los recursos.
¿Cómo se automatiza el despliegue en un entorno productivo?
El uso de repositorios de código y herramientas de integración continua como CodePipeline facilita el despliegue automatizado:
-
Repositorio de código: La plantilla de CloudFormation se almacena en repositorios como GitHub o Bitbucket.
-
CodePipeline: Toma las tareas del repositorio y despliega la plantilla, lanzando el clúster y ejecutando los steps.
-
Eventos automáticos: Herramientas como CloudWatch pueden programar eventos diarios, como lanzar pipelines a medianoche para procesar, por ejemplo, los logs del día anterior.
Esta automatización no solo agiliza procesos, sino que también optimiza costos, al permitir apagados automáticos del clúster tras completar las tareas, evitando gastos innecesarios por instancias funcionando sin uso activo.