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 |
---|---|---|---|---|---|
|
Conmutador de características |
|
no configurado |
etiqueta |
|
|
Firma de trabajo |
string |
no configurado |
anotación |
|
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 etiquetadynamic.sizing
. Para activar el escalado automático vertical, establezcadynamic.sizing
entrue
en el pod controlador de Spark. Si omite esta etiqueta o la establece en cualquier otro valor que no seatrue
, el escalado automático vertical está desactivado. -
dynamic.sizing.signature
: defina la firma del trabajo con la anotacióndynamic.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 |
---|---|---|---|---|---|
Modo de escalado automático vertical |
|
|
anotación |
|
|
Permite escalar la memoria |
|
|
anotación |
|
|
Activar o desactivar escalado de CPU |
|
|
anotación |
|
|
Límite mínimo de escalado de memoria |
cadena, cantidad de recursos de K81G |
no configurado |
anotación |
spark.kubernetes.driver.label.emr-containers.amazonaws.com/dynamic.sizing.scale.memory.min |
|
Límite máximo de escalado de memoria |
cadena, cantidad de recursos de K84G |
no configurado |
anotación |
spark.kubernetes.driver.label.emr-containers.amazonaws.com/dynamic.sizing.scale.memory.max |
|
Límite mínimo de escalado de CPU |
cadena, cantidad de recursos de K81 |
no configurado |
anotación |
spark.kubernetes.driver.label.emr-containers.amazonaws.com/dynamic.sizing.scale.cpu.min |
|
Límite máximo de escalado de CPU |
cadena, cantidad de recursos de K82 |
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.