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-labelemr-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.