Estimador de costos sin servidor de Amazon EMR

Estimador de costos sin servidor de Amazon EMR

Nodo de origen: 1776349

Amazon EMR sin servidor es una opción sin servidor en EMR de Amazon eso facilita a los analistas e ingenieros de datos ejecutar aplicaciones utilizando marcos de análisis de big data de código abierto como Apache Spark y Hive sin configurar, administrar y escalar clústeres o servidores. Obtiene todas las funciones de los marcos de código abierto más recientes con el tiempo de ejecución de rendimiento optimizado de Amazon EMR y sin tener que planificar ni operar instancias y clústeres.

Con Amazon EMR, puede ejecutar sus aplicaciones de análisis en clústeres de EMR dedicados, en Servicio Amazon Elastic Kubernetes (Amazon EKS) o usando la nueva opción de implementación sin servidor EMR donde no tiene que administrar clústeres o instancias. Cuando crea una aplicación Spark o Hive con una versión de Amazon EMR, digamos Amazon EMR 6.8, puede ejecutar la aplicación en clústeres de EMR, en clústeres de EKS usando Amazon EMR en EKS, o utilizando EMR Serverless sin tener que cambiar de aplicación.

Para conocer los beneficios de cada opción de implementación en EMR sin servidor, referirse a ¿Cuáles son algunas de las diferencias de características entre EMR Serverless y Amazon EMR en EC2? en las preguntas frecuentes de Amazon EMR. También puede conocer los precios de estas opciones en el Página de precios de Amazon EMR. Muchos clientes ya ejecutan aplicaciones de análisis de datos en clústeres de EMR y descubren que la nueva opción sin servidor es más simple y menos costosa.

En esta publicación, discutimos cómo puede estimar lo que puede costar ejecutar una aplicación que actualmente se ejecuta en clústeres de EMR usando la nueva opción sin servidor y realizar este análisis simplemente usando las métricas de su aplicación actual. Este enfoque lo ayuda a evaluar y adoptar la opción de implementación más rentable para la aplicación. Sin embargo, la página de precios de Amazon EMR no le dice cómo puede estimar fácilmente el costo de ejecutar sus aplicaciones de clúster EMR existentes en EMR Serverless. En las siguientes secciones, describimos un enfoque que le permite hacerlo.

Aunque el ejemplo de esta publicación analiza cómo puede obtener una estimación de costos para las aplicaciones que se ejecutan en clústeres de EMR, también puede usar el enfoque si está ejecutando una aplicación Spark o Hive en otro lugar y desea estimar el costo de ejecutarla en EMR. Sin servidor. Por ejemplo, si ejecuta aplicaciones Spark o Hive autoadministradas en Nube informática elástica de Amazon (Amazon EC2), o si ejecuta trabajos de Spark en Pegamento AWS, le mostramos cómo puede utilizar este enfoque para estimar el costo de ejecutar la aplicación en EMR Serverless.

Estimación del costo de ejecutar aplicaciones en su clúster de EMR

Cuando ejecuta aplicaciones en clústeres de Amazon EMR, se le cobra por separado lo siguiente:

  1. El precio de Amazon EC2 de ejecutar instancias de clúster (el precio de los servidores subyacentes)
  2. El precio de Tienda de bloques elásticos de Amazon (Amazon EBS), si elige adjuntar volúmenes de EBS
  3. El precio de Amazon EMR para las instancias del clúster

El costo total de ejecutar el clúster incluye los tres. Hay una variedad de opciones de precios de Amazon EC2 entre las que puede elegir, que incluyen On Demand, instancias reservadas de 1 y 3 años, planes de ahorro de capacidad e instancias puntuales. La opción de precios de Amazon EC2 que elija determina (a), el precio de Amazon EC2. El costo de ejecutar la aplicación en clústeres de EMR es la suma de (a), (b) y (c). Puede calcular este costo para la duración de la ejecución del clúster (desde el momento en que se inicia un clúster hasta el momento en que finaliza) o durante un período de tiempo específico mientras se ejecuta el clúster. Recomendamos ejecutar el primero, es decir, calcular (a), (b) y (c) desde el momento en que se inicia el clúster hasta el momento en que finaliza. Si ha configurado etiquetas para su clúster de Amazon EMR, puede obtener fácilmente el informe de costos detallado para su clúster de EMR utilizando AWS Cost Explorer.

Estimación del costo de ejecutar las mismas aplicaciones usando EMR Serverless

Cuando ejecuta las mismas aplicaciones con EMR Serverless, paga por la cantidad de vCPU, memoria y recursos de almacenamiento consumidos por sus aplicaciones. No hay un cargo por separado para las instancias EC2 o los volúmenes de EBS. Además, solo paga por los recursos que realmente usa la aplicación y no por las instancias EC2 aprovisionadas. Por ejemplo, cuando se ejecutan aplicaciones en clústeres de EMR, cuando una instancia EC2 en el clúster se utiliza parcialmente (por ejemplo, se utilizan 16 GB de memoria de los 64 GB disponibles en la instancia, o se utilizan 4 VCPU de los 16 VCPU disponibles en la instancia). ), o cuando la instancia EC2 está inactiva (por ejemplo, cuando la instancia se está inicializando o esperando que se inicie una aplicación), aún incurre en cargos de Amazon EC2, Amazon EMR y Amazon EBS por la instancia EC2 completa y por la duración que la instancia está activa en el clúster de EMR. Con EMR Serverless, solo paga por los recursos de vCPU, memoria y almacenamiento utilizados desde el momento en que los trabajadores comienzan a ejecutar su trabajo de Spark o Hive hasta el momento en que se detienen.

Para estimar el costo de ejecutar su aplicación EMR Spark o Hive en EMR Serverless, primero debe agregar el total de vCore-segundos, MB-segundos de memoria y GB-segundos de almacenamiento consumidos por cada aplicación YARN que se ejecutó en su clúster EMR, desde el momento en que se inicia el contenedor YARN hasta el momento en que finaliza el contenedor YARN. Puede obtener estas métricas de los registros del administrador de recursos de YARN accesibles desde el servidor de escala de tiempo de YARN o las herramientas de la CLI de YARN. Puede recuperar el tiempo de ejecución, los segundos de núcleo virtual y los MB de memoria usados ​​por cada una de las aplicaciones de YARN.

Si su clúster solo ejecuta aplicaciones Spark, existe un enfoque más simple para realizar la estimación. En lugar de obtener los segundos de núcleo virtual, los MB de memoria y los GB de almacenamiento de los registros del administrador de recursos de YARN, puede obtener estas métricas de los registros de eventos de Spark. Hemos proporcionado la herramienta Estimador sin servicio de EMR, que puede analizar los registros de eventos de Spark para sus aplicaciones y proporcionar las métricas agregadas para su estimación de costos.

Después de obtener las métricas de uso de su aplicación, puede calcular el costo estimado de EMR Serverless usando Precios sin servidor de EMR. Simplemente multiplique sus vCore-segundos agregados con el precio de vCPU sin servidor de EMR por segundo, multiplique los MB-segundos de memoria agregada con el precio de memoria sin servidor de EMR por segundo y multiplique los GB-segundos de almacenamiento con el precio de almacenamiento sin servidor de EMR por segundo (solo si los requisitos de almacenamiento superar los 20 GB por trabajador). Al sumar estos costos de vCPU, memoria y almacenamiento, puede comparar el costo de ejecutar las mismas aplicaciones en EMR Serverless.

En este enfoque, asumimos que el rendimiento de la aplicación es equivalente. En otras palabras, el tamaño (vCPU, memoria) y la duración del tiempo de ejecución de cada contenedor YARN en el clúster de EMR es el mismo que el número, el tamaño y la duración del tiempo de ejecución de los trabajadores necesarios para ejecutar la aplicación en EMR Serverless. Hacemos esta suposición porque el tiempo de ejecución de EMR para una versión de EMR es el mismo independientemente de si la aplicación se ejecuta en un clúster de EMR o en EMR Serverless.

Ejemplo

Hagamos una comparación de costos de muestra de Amazon EMR en EC2 y EMR Serverless usando un solo clúster.

Ejecutamos una aplicación Spark en un clúster de EMR con cinco nodos (uno principal, dos centrales y dos tareas) y recopilamos métricas de YARN mediante la CLI de YARN. El siguiente código muestra nuestra asignación de recursos agregados.

asignación de recursos agregados

Calculamos los costos de Amazon EMR en EC2 de la siguiente manera:

  • Instancias de clúster
    • Primario: m5.2xgrande: 1
    • Núcleo: r5.2xgrande: 2
    • Tarea: r5.2xlarge:2
  • Tiempo de ejecución del clúster = 18 min
  • Costo de instancia bajo demanda
    • m5.2xlarge (8 CPU virtuales, memoria de 32 GiB)
      • Amazon EC2: $0.384/hora
      • Amazon EMR incremental: 0.096 USD/h
    • r5.2xlarge (8 vCPU, 64 GiB de memoria)
      • Amazon EC2: $0.504/hora
      • Amazon EMR incremental: 0.126 USD/h

El siguiente es el EMR en el cálculo de costos de EC2:

  • Costo de Amazon EMR = ((1 nodo principal x 0.096 USD/h) + (2 nodos centrales x 0.126 USD/hr) + (2 nodos de tareas x 0.126 USD/hr)) = 0.60 USD
  • Costo de Amazon EC2 = ((1 principal x 0.384 USD/h) + (2 nodos centrales x 0.504 USD/hr) + (2 nodos de tareas x 0.504 USD/hr)) = 2.40 USD
  • Costo por hora de Amazon EMR en el clúster de EC2 = 0.6 USD + 2.40 USD = 3 USD por hora * 8/60 horas (tiempo de ejecución en horas)

El costo total de Amazon EMR en Amazon EC2 es de 0.40 USD por hora.

Para calcular el costo sin servidor de EMR, sume los segundos de núcleo virtual y los MB de memoria para la misma aplicación que ejecutó anteriormente en el clúster de EMR. Luego, multiplique esos números con el precio de memoria y vCPU sin servidor de EMR. Los resultados de nuestros cálculos son los siguientes:

  • Total_vcore_segundos = 5737
  • Memoria_total_mb_segundos = 120156631
  • Convertir a vCPU/hr y memoria-GB/hr:
    • vCPU agregado/h: 5737/(60*60)=1.59
    • Aggregated memory/hr: 120156631/(60*60*1024)=32.5
  • Costo total de vCPU-horas = 33 vCPU * 0.052624 VCPU/h * 8/60 = 0.23 USD
  • Costo total de GB de memoria = 1.59 MB * 0.0057785 memoria/h * 8/60 = 0.00122 USD

En este ejemplo, el costo total de EMR Serverless es de $0.231, una reducción del 42 %.

Conclusión

Amazon EMR Serverless es una opción sin servidor lanzada recientemente en Amazon EMR que facilita la ejecución de marcos de código abierto como Spark y Hive sin configurar, administrar ni escalar clústeres. Los clientes que ya usan clústeres de EMR quieren comprender cómo pueden estimar el costo de ejecutar sus aplicaciones de EMR usando EMR Serverless. Hemos presentado un enfoque que puede usar para realizar un análisis de costos basado en el análisis de métricas de aplicaciones de sus clústeres de EMR.

¡Esperamos que pruebes esto y compartas tus comentarios con nosotros!


Sobre los autores

Radhika Ravirala es el gerente principal de productos en AWS.

mateo liem es el administrador sénior de arquitectura de soluciones en AWS.

Sello de tiempo:

Mas de Big Data de AWS