Escalado avanzado para Amazon EMR - Amazon EMR

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Escalado avanzado para Amazon EMR

A partir de Amazon EMR en la EC2 versión 7.0, puede aprovechar Advanced Scaling para controlar la utilización de los recursos del clúster. Advanced Scaling presenta una escala de utilización-rendimiento para ajustar la utilización de los recursos y el nivel de rendimiento en función de las necesidades de su empresa. El valor que establezca determinará si el clúster se centra más en la conservación de los recursos o en la ampliación para gestionar cargas de trabajo sensibles service-level-agreement (SLA), en las que es fundamental completarlo rápidamente. Cuando se ajusta el valor de escalado, el escalado administrado interpreta su intención y escala de forma inteligente para optimizar los recursos. Para obtener más información sobre el escalado administrado, consulte Configure managed scaling for Amazon EMR.

Configuración de escalado avanzada

El valor que ha establecido para el escalado avanzado optimiza el clúster en función de sus necesidades. Los valores están comprendidos entre 1 y 100. Los valores posibles son 1, 25, 50, 75 y 100. Si establece el índice en valores distintos de estos, se producirá un error de validación.

Los valores de escalado se corresponden con las estrategias de utilización de los recursos. En la siguiente lista, se definen varias de ellas:

  • Utilización optimizada [1]: esta configuración evita el sobreaprovisionamiento de recursos. Utilice un valor bajo cuando desee mantener los costos bajos y priorizar la utilización eficiente de los recursos. Hace que el clúster escale verticalmente de forma menos agresiva. Esto funciona bien en los casos de uso en los que se producen picos de carga de trabajo frecuentes y no se desea que los recursos aumenten demasiado rápido.

  • Equilibrado [50]: equilibra la utilización de los recursos y el rendimiento de los trabajos. Esta configuración es adecuada para cargas de trabajo estables en las que la mayoría de las etapas tienen un tiempo de ejecución estable. También es adecuado para cargas de trabajo con una combinación de etapas de corta y larga duración. Le recomendamos que empiece con esta configuración si no está seguro de cuál elegir.

  • Rendimiento optimizado [100]: esta estrategia prioriza el rendimiento. El clúster se escala verticalmente de forma agresiva para garantizar que los trabajos se completen con rapidez y cumplan los objetivos de rendimiento. El rendimiento optimizado es adecuado para cargas de trabajo sensibles service-level-agreement (SLA) en las que un tiempo de ejecución rápido es fundamental.

nota

Los valores intermedios disponibles proporcionan un punto medio entre las estrategias para refinar con precisión el comportamiento de escalado avanzado del clúster.

Ventajas del escalado avanzado

Dado que su entorno y sus requisitos varían, como los cambios en los volúmenes de datos, los ajustes de los objetivos de costes y las implementaciones de los acuerdos de nivel de servicio, el escalado de clústeres puede ayudar a ajustar la configuración del clúster para alcanzar sus objetivos. También ofrece otras ventajas como las siguientes:

  • Control granular mejorado: la introducción de la configuración de utilización-rendimiento le permite ajustar fácilmente el comportamiento de escalado del clúster de acuerdo con sus requisitos. Puede escalar verticalmente para satisfacer la demanda de recursos informáticos o reducir verticalmente para ahorrar recursos, en función de sus patrones de uso.

  • Optimización de costos mejorada: puede elegir un valor de utilización bajo según lo exijan los requisitos para cumplir más fácilmente sus objetivos de costos.

Introducción a la optimización

Instalación y configuración

Siga estos pasos para establecer el índice de rendimiento y optimizar su estrategia de escalado.

  1. El siguiente comando actualiza un clúster existente con la estrategia de escalado [1] optimizada para el uso:

    aws emr put-managed-scaling-policy --cluster-id 'cluster-id' \ --managed-scaling-policy '{ "ComputeLimits": { "UnitType": "Instances", "MinimumCapacityUnits": 1, "MaximumCapacityUnits": 2, "MaximumOnDemandCapacityUnits": 2, "MaximumCoreCapacityUnits": 2 }, "ScalingStrategy": "ADVANCED", "UtilizationPerformanceIndex": "1" }' \ --region "region-name"

    Los atributos ScalingStrategy y UtilizationPerformanceIndex son nuevos y relevantes para la optimización del escalado. Puede seleccionar diferentes estrategias de escalado estableciendo los valores correspondientes (1, 25, 50, 75 y 100) para el atributo UtilizationPerformanceIndex en la política de escalado administrado.

  2. Para volver a la estrategia de escalado administrado predeterminada, ejecute el comando put-managed-scaling-policy sin incluir los atributos ScalingStrategy y UtilizationPerformanceIndex. (Esto es opcional). En este ejemplo, se muestra cómo hacerlo:

    aws emr put-managed-scaling-policy \ --cluster-id 'cluster-id' \ --managed-scaling-policy '{"ComputeLimits":{"UnitType":"Instances","MinimumCapacityUnits":1,"MaximumCapacityUnits":2,"MaximumOnDemandCapacityUnits":2,"MaximumCoreCapacityUnits":2}}' \ --region "region-name"

Uso de métricas de monitoreo para realizar un seguimiento de la utilización del clúster

A partir de la versión 7.3.0 de EMR, Amazon EMR publica cuatro métricas nuevas relacionadas con la memoria y la CPU virtual. Puede utilizarlas para medir la utilización del clúster en todas las estrategias de escalado. Estas métricas están disponibles para cualquier caso de uso, pero puede utilizar los detalles que se proporcionan aquí para supervisar el escalado avanzado.

Entre las métricas útiles disponibles se incluyen las siguientes:

  • YarnContainersUsedMemoryGBSeconds— Cantidad de memoria consumida por las aplicaciones gestionadas por YARN.

  • YarnContainersTotalMemoryGBSeconds— Capacidad de memoria total asignada a YARN dentro del clúster.

  • YarnNodesUsedVCPUSeconds— Número total de segundos de CPU virtual para cada aplicación gestionada por YARN.

  • YarnNodesTotalVCPUSeconds— El total de segundos de CPU virtual acumulados para la memoria consumida, incluido el intervalo de tiempo en el que Yarn no está listo.

Puede analizar las métricas de los recursos mediante Amazon CloudWatch Logs Insights. Las características incluyen un lenguaje de consultas especialmente diseñado que ayuda a extraer métricas específicas para el uso y el escalado de los recursos.

En la siguiente consulta, que se puede ejecutar en la Amazon CloudWatch consola, se utilizan métricas matemáticas para calcular la utilización media de la memoria (e1) dividiendo la suma acumulada de la memoria consumida (e2) entre la suma corriente de la memoria total (e3):

{ "metrics": [ [ { "expression": "e2/e3", "label": "Average Mem Utilization", "id": "e1", "yAxis": "right" } ], [ { "expression": "RUNNING_SUM(m1)", "label": "RunningTotal-YarnContainersUsedMemoryGBSeconds", "id": "e2", "visible": false } ], [ { "expression": "RUNNING_SUM(m2)", "label": "RunningTotal-YarnContainersTotalMemoryGBSeconds", "id": "e3", "visible": false } ], [ "AWS_EMR_ManagedResize", "YarnContainersUsedMemoryGBSeconds", "ACCOUNT_ID", "793684541905", "COMPONENT", "ManagerService", "JOB_FLOW_ID", "cluster-id", { "id": "m1", "label": "YarnContainersUsedMemoryGBSeconds" } ], [ ".", "YarnContainersTotalMemoryGBSeconds", ".", ".", ".", ".", ".", ".", { "id": "m2", "label": "YarnContainersTotalMemoryGBSeconds" } ] ], "view": "timeSeries", "stacked": false, "region": "region", "period": 60, "stat": "Sum", "title": "Memory Utilization" }

Para consultar los registros, puede seleccionarlos CloudWatch en la AWS consola. Para obtener más información sobre cómo escribir consultas CloudWatch, consulte Análisis de datos de registro con CloudWatch Logs Insights en la Guía del usuario de Amazon CloudWatch Logs.

En la siguiente imagen, se muestran estas métricas para un clúster de muestra:

Gráfico que muestra las estadísticas de uso.

Consideraciones y limitaciones

  • La eficacia de las estrategias de escalado puede variar en función de las características únicas de la carga de trabajo y de la configuración del clúster. Le recomendamos que experimente con la configuración de escalado para determinar un valor de índice óptimo para su caso de uso.

  • El escalado avanzado de Amazon EMR es especialmente adecuado para cargas de trabajo por lotes. Para cargas de trabajo de SQL/almacenamiento de datos y streaming, recomendamos utilizar la estrategia de escalado administrado predeterminada para obtener un rendimiento óptimo.

  • Amazon EMR Advanced Scaling no es compatible cuando las configuraciones de etiquetas de nodo están habilitadas en el clúster. Si las configuraciones de escalado avanzado y de etiqueta de nodo están habilitadas juntas en un clúster, el comportamiento de escalado sería como si estuviera habilitada la configuración de escalado administrado predeterminada.

  • La estrategia de escalado optimizada para el rendimiento permite una ejecución más rápida de los trabajos al mantener una gran cantidad de recursos de cómputo durante un período más prolongado que la estrategia de escalado administrado predeterminada. Este modo prioriza el escalado vertical rápido para satisfacer la demanda de recursos, lo que se traduce en una finalización más rápida del trabajo. Esto podría generar costos más altos en comparación con la estrategia predeterminada.

  • En los casos en que el clúster ya esté optimizado y se utilice en su totalidad, es posible que habilitar el escalado avanzado no proporcione beneficios adicionales. En algunas situaciones, habilitar el escalado avanzado puede generar un aumento de los costos, ya que las cargas de trabajo pueden durar más. En estos casos, recomendamos utilizar la estrategia de escalado administrado predeterminada para garantizar una asignación de recursos y una rentabilidad óptimas.

  • En el contexto del escalado administrado, se hace más hincapié en la utilización de los recursos y no en el tiempo de ejecución, ya que la configuración pasa de estar optimizada para el rendimiento [100] a estar optimizada para la utilización [1]. Sin embargo, es importante tener en cuenta que los resultados pueden variar según la naturaleza de la carga de trabajo y la topología del clúster. Para garantizar resultados óptimos para su caso de uso, le recomendamos encarecidamente que pruebe las estrategias de escalado con sus cargas de trabajo para determinar la configuración más adecuada.

  • El solo PerformanceUtilizationIndexacepta los siguientes valores:

    • 1

    • 25

    • 50

    • 75

    • 100

    Cualquier otro valor enviado provocará un error de validación.