Conceitos básicos da escalabilidade automática vertical para o Amazon EMR no EKS - Amazon EMR

Conceitos básicos da escalabilidade automática vertical para o Amazon EMR no EKS

Use o ajuste de escala automático vertical para o Amazon EMR no EKS quando desejar que o ajuste automático de memória e recursos de CPU se adapte à workload da aplicação do Spark no Amazon EMR. Para obter mais informações, consulte Using vertical autoscaling with Amazon EMR Spark jobs.

Envio de um trabalho do Spark com a escalabilidade automática vertical

Ao enviar um trabalho usando a API StartJobRun, adicione as duas seguintes configurações ao driver do trabalho do Spark para ativar a escalabilidade automática vertical:

"spark.kubernetes.driver.label.emr-containers.amazonaws.com/dynamic.sizing":"true", "spark.kubernetes.driver.annotation.emr-containers.amazonaws.com/dynamic.sizing.signature":"YOUR_JOB_SIGNATURE"

No código acima, a primeira linha ativa a funcionalidade de escalabilidade automática vertical. A linha seguinte é uma configuração de assinatura obrigatória que permite que você escolha uma assinatura para o seu trabalho.

Para obter mais informações sobre essas configurações e valores de parâmetros aceitáveis, consulte Configuração da escalabilidade automática vertical para o Amazon EMR no EKS. Por padrão, seu trabalho é enviado com a opção somente monitoramento no modo Desativado para a escalabilidade automática vertical. Esse estado de monitoramento permite calcular e visualizar recomendações de recursos sem realizar a escalabilidade automática. Para ter mais informações, consulte Modos da escalabilidade automática vertical.

O seguinte exemplo mostra como concluir um comando start-job-run de exemplo com a escalabilidade automática vertical:

aws emr-containers start-job-run \ --virtual-cluster-id $VIRTUAL_CLUSTER_ID \ --name $JOB_NAME \ --execution-role-arn $EMR_ROLE_ARN \ --release-label emr-6.10.0-latest \ --job-driver '{ "sparkSubmitJobDriver": { "entryPoint": "local:///usr/lib/spark/examples/src/main/python/pi.py" } }' \ --configuration-overrides '{ "applicationConfiguration": [{ "classification": "spark-defaults", "properties": { "spark.kubernetes.driver.label.emr-containers.amazonaws.com/dynamic.sizing": "true", "spark.kubernetes.driver.annotation.emr-containers.amazonaws.com/dynamic.sizing.signature": "test-signature" } }] }'

Verificação de funcionalidade da escalabilidade automática vertical

Para verificar se a escalabilidade automática vertical está funcionando corretamente para o trabalho enviado, use kubectl para obter o recurso personalizado verticalpodautoscaler e visualizar suas recomendações de escalabilidade. Por exemplo, o seguinte comando consulta recomendações sobre o trabalho de exemplo da seção Envio de um trabalho do Spark com a escalabilidade automática vertical:

kubectl get verticalpodautoscalers --all-namespaces \ -l=emr-containers.amazonaws.com/dynamic.sizing.signature=test-signature

A saída desta consulta deve ser semelhante à seguinte:

NAME MODE CPU MEM PROVIDED AGE ds-jceyefkxnhrvdzw6djum3naf2abm6o63a6dvjkkedqtkhlrf25eq-vpa Off 3304504865 True 87m

Se a saída não for semelhante ou tiver um código de erro, consulte Solução de problemas de escalabilidade automática vertical do Amazon EMR no EKS para obter passos que ajudam a resolver o problema.