Configuración del escalado automático vertical de Amazon EMR en EKS - Amazon EMR

Configuración del escalado automático vertical de Amazon EMR en EKS

Puede configurar el escalado automático vertical al enviar trabajos de Spark de Amazon EMR a través de la API StartJobRun. Establezca los parámetros de configuración relacionados con el escalado automático en el pod controlador de Spark, tal como se muestra en el ejemplo de Envío de un trabajo de Spark con escalado automático vertical.

El operador de escalado automático vertical de Amazon EMR en EKS escucha los pods controladores que tienen escalado automático y, a continuación, configura la integración con el escalador automático vertical de pods (VPA) de Kubernetes con la configuración del pod controlador. Esto facilita el seguimiento de los recursos y el escalado automático de los pods ejecutores de Spark.

En las siguientes secciones, se describen los parámetros que puede usar al configurar el escalado automático vertical para su clúster de Amazon EKS.

nota

Configure el parámetro de alternancia de características como una etiqueta y configure los parámetros restantes como anotaciones en el pod controlador de Spark. Los parámetros de escalado automático pertenecen al dominio emr-containers.amazonaws.com/ y tienen el prefijo dynamic.sizing.

Parámetros necesarios

Cuando envíe su trabajo, debe incluir los dos parámetros siguientes en el controlador de tareas de Spark:

Clave Descripción Valores aceptados Valor predeterminado Tipo Parámetro de Spark1

dynamic.sizing

Conmutador de características

true, false

no configurado

etiqueta

spark.kubernetes.driver.label.emr-containers.amazonaws.com/dynamic.sizing

dynamic.sizing.signature

Firma de trabajo

string

no configurado

anotación

spark.kubernetes.driver.annotation.emr-containers.amazonaws.com/dynamic.sizing.signature

1 Utilice este parámetro como SparkSubmitParameter o ConfigurationOverride en la API de StartJobRun.

  • dynamic.sizing: puede activar y desactivar el escalado automático vertical con la etiqueta dynamic.sizing. Para activar el escalado automático vertical, establezca dynamic.sizing en true en el pod controlador de Spark. Si omite esta etiqueta o la establece en cualquier otro valor que no sea true, el escalado automático vertical está desactivado.

  • dynamic.sizing.signature: defina la firma del trabajo con la anotación dynamic.sizing.signature en el pod controlador. El escalado automático vertical agrega los datos de uso de recursos en diferentes ejecuciones de trabajos de Amazon EMR Spark para obtener recomendaciones de recursos. Usted proporciona el identificador único para vincular los trabajos.

    nota

    Si el trabajo se repite en un intervalo fijo, como una vez al día o una vez por semana, la firma del trabajo debe permanecer igual para cada nueva instancia del trabajo. Esto garantiza que el escalado automático vertical pueda calcular y agregar las recomendaciones en diferentes ejecuciones del trabajo.

1 Utilice este parámetro como SparkSubmitParameter o ConfigurationOverride en la API de StartJobRun.

Parámetros opcionales

El escalado automático vertical también admite los siguientes parámetros opcionales. Configúrelos como anotaciones en el pod controlador.

Clave Descripción Valores aceptados Valor predeterminado Tipo Parámetro de Spark1

dynamic.sizing.mode

Modo de escalado automático vertical

Off, Initial, Auto

Off

anotación

spark.kubernetes.driver.label.emr-containers.amazonaws.com/dynamic.sizing.mode

dynamic.sizing.scale.memory

Permite escalar la memoria

true, false

true

anotación

spark.kubernetes.driver.label.emr-containers.amazonaws.com/dynamic.sizing.scale.memory

dynamic.sizing.scale.cpu

Activar o desactivar escalado de CPU

true, false

false

anotación

spark.kubernetes.driver.label.emr-containers.amazonaws.com/dynamic.sizing.scale.cpu

dynamic.sizing.scale.memory.min

Límite mínimo de escalado de memoria

cadena, cantidad de recursos de K8, por ejemplo: 1G

no configurado

anotación

spark.kubernetes.driver.label.emr-containers.amazonaws.com/dynamic.sizing.scale.memory.min

dynamic.sizing.scale.memory.max

Límite máximo de escalado de memoria

cadena, cantidad de recursos de K8, por ejemplo: 4G

no configurado

anotación

spark.kubernetes.driver.label.emr-containers.amazonaws.com/dynamic.sizing.scale.memory.max

dynamic.sizing.scale.cpu.min

Límite mínimo de escalado de CPU

cadena, cantidad de recursos de K8, por ejemplo: 1

no configurado

anotación

spark.kubernetes.driver.label.emr-containers.amazonaws.com/dynamic.sizing.scale.cpu.min

dynamic.sizing.scale.cpu.max

Límite máximo de escalado de CPU

cadena, cantidad de recursos de K8, por ejemplo: 2

no configurado

anotación

spark.kubernetes.driver.label.emr-containers.amazonaws.com/dynamic.sizing.scale.cpu.max

Modos de escalado automático vertical

El parámetro mode se asigna a los diferentes modos de escalado automático que el VPA admite. Utilice la anotación dynamic.sizing.mode del pod controlador para configurar el modo. Se admiten los siguientes valores para este parámetro:

  • Desactivado: un modo de ejecución en seco en el que puede supervisar las recomendaciones, pero no se lleva a cabo el escalado automático. Este es el modo predeterminado para el escalado automático vertical. En este modo, el recurso del escalador automático vertical de pods asociado calcula las recomendaciones y usted puede supervisarlas mediante herramientas como kubectl, Prometheus y Grafana.

  • Inicial: en este modo, el VPA escala automáticamente los recursos cuando se inicia el trabajo si hay recomendaciones disponibles en función del historial de ejecución del trabajo, como en el caso de un trabajo periódico.

  • Automático: en este modo, el VPA expulsa los pods ejecutores de Spark y los escala automáticamente con la configuración de recursos recomendada cuando el pod controlador de Spark los reinicia. A veces, el VPA expulsa los pods ejecutores de Spark en ejecución, por lo que podría producirse una latencia adicional al volver a intentar el ejecutor interrumpido.

Escalado de recursos

Al configurar el escalado automático vertical, puede elegir si desea escalar los recursos de CPU y memoria. Establezca las anotaciones dynamic.sizing.scale.cpu y dynamic.sizing.scale.memory en true o false. De forma predeterminada, el escalado de CPU está establecido en false y el escalado de memoria está establecido en true.

Mínimos y máximos de recursos (límites)

De forma opcional, también puede establecer límites en los recursos de CPU y memoria. Elija un valor mínimo y máximo para estos recursos con las anotaciones dynamic.sizing.[memory/cpu].[min/max] cuando habilite el escalado automático. De forma predeterminada, los recursos no tienen limitaciones. Configure las anotaciones como valores de cadena que representen la cantidad de recursos de Kubernetes. Por ejemplo, configure dynamic.sizing.memory.max en 4G para representar 4 GB.