EMR automatizado con CloudFormation

Clase 32 de 52Curso de Big Data en AWS

Resumen

Lleva tu orquestación de datos al siguiente nivel con Amazon EMR automatizado mediante CloudFormation. Aquí verás cómo definir el clúster como código, controlar dependencias de ejecución con steps, ajustar configuraciones clave (red, seguridad, bootstrap actions) y conectarlo a un pipeline CI/CD para procesamiento tipo batch confiable y de bajo costo.

¿Cómo automatizar EMR con CloudFormation en producción?

Definir EMR como infraestructura como código garantiza versionado, repetibilidad y mínima administración. La plantilla de CloudFormation replica lo hecho de forma gráfica y lo convierte en despliegues consistentes.

¿Qué define la plantilla de CloudFormation?

  • Región y nombre de environment.
  • Selección de subred vía mappings o directamente con subnet ID.
  • Sección de resources con los steps del flujo.
  • Dependencias: un step espera al anterior con “depende de”.
  • Política de error en Action on failure: continuar, cancelar y esperar, o terminar el clúster.
  • Arguments: rutas de directorios y ejecuciones puntuales para los jobs.

¿Cómo se configuran instancias y red en EMR?

  • Definición del clúster EMR y conteo de instancias.
  • Nodo master: uno, tamaño especificado, tipo de compra on demand.
  • Nodos core: dos, tamaño y tipo on demand como en el ejemplo por consola.
  • Red: uso de subnet ID directo o búsqueda por mapping según el environment.
  • Acceso: llave SSH para la instancia master.
  • Seguridad: referencia a security groups. En subred pública crea dos grupos; en subred privada añade un tercer grupo para mayor seguridad.

¿Qué ajustes previos y aplicaciones se instalan?

  • Bootstrap actions desde un bucket con script .sh antes del estado activo.
  • Logs: ubicación de almacenamiento centralizada.
  • Configuraciones: ejemplo de Java 1.8 y parámetros detallados de Hadoop enviados desde la misma plantilla.
  • Applications: instalación declarativa de Zeppelin, Hadoop y Spark.
  • Versiones: la versión de Spark depende de la versión de EMR (ejemplos citados: EMR 5.20 usa Spark 2.4; EMR 5.4 usa Spark 2.1).
  • Permisos y gobierno: roles por defecto y uso de tags para identificar recursos.

¿Qué arquitectura de automatización CI/CD se recomienda?

Para producción, la plantilla vive en un repositorio y se despliega sin intervención manual. Así, el ciclo es predecible y fácil de auditar.

¿Cómo se orquesta con repositorios y CodePipeline?

  • Código en GitHub, BitBucket, CodeCommit o incluso S3.
  • Integración con CodePipeline.
  • Ejecución: el pipeline toma la plantilla, despliega CloudFormation, lanza el clúster, corre los steps y lo termina.
  • Beneficio: infraestructura efímera que reduce costos y errores humanos.

¿Qué patrón de procesamiento diario se sugiere?

  • Disparo con eventos de CloudWatch a medianoche.
  • El pipeline toma la plantilla del repositorio, crea el clúster, ejecuta los steps y finaliza.
  • Caso de uso: procesar los logs del día anterior de forma automatizada.
  • Alternativa: dejar el clúster encendido para tiempo real, con costo mayor por servidores aprovisionados.

¿Cómo optimizar costos y entender el pricing de EMR?

Optimizar implica elegir bien el patrón de ejecución y entender la factura. Los clústeres efímeros tipo batch permiten pagar solo por lo usado.

¿Qué compone el costo de EMR?

  • Costo de las instancias EC2 subyacentes.
  • Costo del servicio EMR como tal.
  • Implicación: ejecuciones cortas y programadas suelen ser más eficientes que clústeres permanentes.

¿Por qué usar clústeres como código?

  • Versionados, repetibles y configurables desde CloudFormation.
  • Menor carga de administración mediante automatización.
  • Control fino de red, security groups, bootstrap actions y applications.
  • Integración con CodePipeline y eventos de CloudWatch para trabajos batch diarios confiables.

¿Te gustaría comentar cómo defines steps, bootstrap actions o el patrón de ejecución para tus cargas en EMR?