Blog de Amazon Web Services (AWS)

Optimizar costos con Amazon EMR Instance Fleets y Managed Scaling

Por Patricio Vazquez, Arquiteto de Soluciones en AWS.

 

Introducción

Amazon EMR es una plataforma de Big Data en la nube para ejecutar trabajos de procesamiento de datos distribuidos a gran escala, consultas SQL interactivas y aplicaciones de Machine Learning (ML) con Frameworks de análisis de código abierto como Apache SparkApache Hive y Presto.

Para optimizar y aprovechar al máximo los recursos que alojamos a EMR, tenemos diferentes opciones que vamos a revisar en este artículo.

Las opciones de compra de instancias para proveer a EMR de nodos son las siguientes.

On-Demand -> El cliente paga por la capacidad de cómputo por segundo sin compromisos a largo plazo.

Reserved Instances y Savings Plans -> El cliente se compromete a 1 o 3 años y recibe descuentos hasta un 72% sobre el precio On-Demand.

Spot Instances -> El cliente puede optar por utilizar capacidad ociosa que AWS tiene en sus Datacenters y puede recibir descuentos aún mayores que bajo el modelo de Reserved Instances. Cabe aclarar que con esta opción las instancias pueden ser reclamada por AWS en cualquier momento, dando al cliente una notificación previa de 2 minutos.

 

Spot Instances

Ejecutar EMR sobre instancias Spot permite ahorrar hasta un 90% comparado con el precio On-Demand. Con precios predecibles.

¿Qué pasa cuando AWS reclama una instancia?

Si bien existe la posibilidad de que una instancia sea reclamada, la tasa de interrupción, estadísticamente, es menor al 5%.

  • Logísticamente, lo primero que sucede es que AWS notifica al cliente a través del envío de un evento por Amazon EventBridge, que se reclamará una instancia en uso.
  • A partir de esa alerta recibida, el cliente tiene 2 minutos de tiempo para tomar una acción, como puede ser terminar la instancia de forma ordenada (Graceful Shutdown en inglés) y migrar el trabajo a otra de las instancias que siguen en ejecución.
  • Hay diferentes estrategias para gestionar interrupciones, pero básicamente se reducen a 3 opciones:
    • Opción 1 -> Terminar la instancia.
    • Opción 2 -> Ejecutar un ciclo de apagado/reiniciado con EC2 Spot. Esto es usado en casos donde los datos son persistidos en volúmenes Amazon EBS.
    • Opción 3 -> Hibernar la instancia. Esto suele ser menos usado, y en este caso se mueven los elementos guardados en memoria hacia un volumen de almacenamiento, que funciona parecido a cerrar y abrir la tapa de una computadora portátil.

 

Arquitectura de EMR

Amazon EMR hace uso de 3 tipos de nodos en un Cluster:

  • Nodo principal (Leader o Master node), gestiona el Cluster.
  • Nodos secundarios (Core nodes), procesan trabajos y puede utilizar almacenamiento propio.
  • Nodos de tarea (Task nodes), procesa trabajos sin almacenamiento propio.

 

Instance Fleets

Instance Fleets y Uniform Instance Groups son diferentes opciones para los grupos de instancias a desplegar en un Cluster EMR. Instance Fleets ofrece una gran variedad de alternativas donde en un mismo grupo se pueden mezclar familias, generaciones y tamaños de instancia, así como también la opción de compra de ellas.

Nota: El uso de Instance Fleets está disponible para las versiones de Amazon EMR 4.8.0 y posteriores, excluyendo las versiones 5.0.x.

Esto hace que usar instancias Spot en conjunto con Instance Fleets en EMR sea una buena estrategia de ahorro porque:

  • Los nodos se pueden configurar en base a una mezcla de instancias On-Demand y Spot.
  • Encontrar y aprovisionar instancias de los grupos de instancias de mayor capacidad y menor precio.
  • Si una instancia Spot es reclamada, otra instancia del Instance Fleet puede tomar su lugar.

 

Análisis de costos escalando con instancias Spot vs On-Demand

La naturaleza distribuida de un Framework de procesamiento de Big Data como EMR permite completar un trabajo en menos tiempo si se aprovisiona más instancias de cómputo.

Tomando los descuentos de instancias Spot, se podría aprovisionar una mayor cantidad de instancias para que el trabajo se complete en menor tiempo.

Veamos un ejemplo con 10 nodos de procesamiento en un Cluster, que se ejecuta durante 14 horas, a un costo de $1 por hora/instancia.

Asumiendo que un trabajo escala de forma lineal y utiliza los recursos de cómputo disponibles, si agregamos 10 nodos adicionales, esto acortaría el tiempo de ejecución a 7 horas.

Y ahora supongamos que obtenemos un precio de instancias Spot a un descuento del 50%, el costo por hora de cada nodo adicional es de $0.50/instancia.

Esto nos deja con un resultado donde:

  • El tiempo de ejecución se reduce en un 50% -> de 14 a 7 horas.
  • El costo se reduce en un 25% -> de $140 a $105.

 

Amazon EMR Managed Scaling

Con Amazon EMR 5.30.0 y posteriores, excluyendo EMR 6.0.0, se puede habilitar Managed Scaling, que es una funcionalidad que permite incrementar y disminuir automáticamente la cantidad de instancias disponibles basado en la cargar de procesamiento que requiere un trabajo.

  • No requiere configuración más allá de definir un mínimo y un máximo de instancias.
  • Ofrece más rápida capacidad de reacción y elasticidad que usar reglas de Autoscaling.
  • Puede ahorrar entre 20% y 60% en costos dependiendo del patrón de la carga de trabajo.

 

Conclusión

AWS ofrece múltiples formas de ejecutar sus cargas de trabajo en la nube y, en este artículo, demostramos una manera de reducir los costos durante el procesamiento de datos con Amazon EMR usando Spot Instances, Instance Fleets y Managed Scaling.

Si desea aprender más, recomiendo revisar los siguientes artículos (en inglés) que proveen profundidad en algunas cuestiones específicas.

Optimizing Amazon EMR for resilience and cost with capacity-optimized Spot Instances

Introducing Amazon EMR Managed Scaling – Automatically Resize Clusters to Lower Cost

Y, adicionalmente, recomiendo explorar la utilización de instancias EC2 con procesadores Graviton de AWS para un mejor rendimiento en función del precio.

 

 


Sobre el autor

Patricio Vazquez es arquitecto de soluciones en Amazon Web Services y tiene 20 años de experiencia trabajando con tecnología informática en roles de ingeniería de infraestructura, arquitectura técnica y empresarial, en países como los Estados Unidos y Argentina.

Actualmente está enfocado en ayudar a clientes del sector público en el diseño e implementación de arquitecturas para soluciones de negocio utilizando Amazon Web Services.