Usar Auto Scaling para o AWS Glue
Agora o Auto Scaling está disponível para seus trabalhos de ETL, sessões interativas e transmissão do AWS Glue com o AWS Glue versão 3.0 ou posterior.
Com o Auto Scaling habilitado, você obtém os seguintes benefícios:
-
O AWS Glue adiciona e remove automaticamente operadores do cluster, dependendo do paralelismo em cada estágio ou microlote da execução do trabalho.
-
Isso reduz a necessidade de experimentar e decidir quantos operadores deverão ser designados para os trabalhos de ETL do AWS Glue.
-
Com o número máximo de operadores, o AWS Glue escolherá os recursos de tamanho certo para a workload.
-
Você pode ver como o tamanho do cluster se altera durante a execução do trabalho observando as métricas do CloudWatch na página de detalhes da execução de trabalho no AWS Glue Studio.
O ajuste de escala automático para trabalhos de ETL e streaming do AWS Glue permite aumentar e reduzir verticalmente a escala dos recursos de computação dos trabalhos do AWS Glue sob demanda. Aumentar a escala verticalmente sob demanda ajuda você a alocar apenas os recursos de computação necessários ao iniciar a execução do trabalho e também a provisionar os recursos necessários de acordo com a demanda durante o trabalho.
O ajuste de escala automático também é compatível com a redução dinâmica da escala vertical dos recursos do trabalho do AWS Glue durante sua execução. Em uma execução de trabalho, quando mais executores forem solicitados pela aplicação Spark, mais operadores serão adicionados ao cluster. Quando o executor ficar ocioso sem tarefas de computação ativas, o executor e o operador correspondente serão removidos.
Os cenários comuns em que o Auto Scaling ajuda no custo e na utilização de suas aplicações do Spark incluem:
-
um driver do Spark listando um grande número de arquivos no Amazon S3 ou executando uma carga enquanto os executores estão inativos
-
estágios do Spark em execução com apenas alguns executores devido ao excesso de provisionamento
-
distorções de dados ou demanda de computação desigual nos estágios do Spark
Requisitos
O Auto Scaling só está disponível para o AWS Glue versão 3.0 ou posterior. Para usar o Auto Scaling, você pode seguir o guia de migração para migrar os trabalhos existentes para o AWS Glue versão 3.0 ou criar novos trabalhos com o AWS Glue versão 3.0.
O ajuste de escala automático está disponível para trabalhos do AWS Glue com os tipos de trabalho G.1X
, G.2X
, G.4X
, G.8X
, G.12X
, G.16X
, R.1X
, R.2X
, R.4X
, R.8X
ou G.025X
(somente para trabalhos de streaming). Não há suporte a DPUs padrão para o ajuste de escala automático.
Habilitar Auto Scaling no AWS Glue Studio
Na guia Detalhes do trabalho no AWS Glue Studio, escolha o tipo Spark ou Streaming do Spark e a Versão do Glue como Glue 3.0
ou posterior. Uma caixa de seleção será exibida abaixo de Tipo de operador.
-
Selecione a opção Automatically scale the number of workers (Dimensionar automaticamente o número de operadores).
-
Defina Maximum numer of workers (Número máximo de operadores) para estabelecer o número máximo de operadores que podem ser transferidos para a execução do trabalho.

Habilitar o Auto Scaling com a AWS CLI ou SDK
Para habilitar o Auto Scaling diretamente da AWS CLI para sua execução de trabalho, execute start-job-run
com a seguinte configuração:
{ "JobName": "<your job name>", "Arguments": { "--enable-auto-scaling": "true" }, "WorkerType": "G.2X", // G.1X, G.2X, G.4X, G.8X, G.12X, G.16X, R.1X, R.2X, R.4X, and R.8X are supported for Auto Scaling Jobs "NumberOfWorkers": 20, // represents Maximum number of workers ...other job run configurations... }
Quando a execução do trabalho de ETL estiver concluída, também será possível chamar get-job-run
para verificar o uso efetivo de recurso da execução de trabalho em segundos de DPU. Observação: o novo campo DPUSeconds só aparecerá para trabalhos em lote no AWS Glue 4.0 ou posterior habilitado com o ajuste de escala automático. Esse campo não é compatível com trabalhos de transmissão.
$ aws glue get-job-run --job-name your-job-name --run-id jr_xx --endpoint https://glue.us-east-1.amazonaws.com --region us-east-1 { "JobRun": { ... "GlueVersion": "3.0", "DPUSeconds": 386.0 } }
Você também pode configurar execuções de tarefas com o Auto Scaling usando o AWS Glue SDK com a mesma configuração.
Habilitar o Auto Scaling com sessões interativas
Para habilitar o Auto Scaling ao criar trabalhos do AWS Glue com sessões interativas, consulte Configuring AWS Glue interactive sessions.
Dicas e considerações
Dicas e considerações para ajustar o ajuste de escala automático do AWS Glue:
-
Caso você não tenha ideia do valor inicial do número máximo de trabalhadores, comece com o cálculo aproximado explicado em Estimativa de DPU do AWS Glue. Não configure um valor extremamente alto no número máximo de operadores para dados de volume muito baixos.
-
O ajuste de escala automático do AWS Glue configura
spark.sql.shuffle.partitions
espark.default.parallelism
com base no número máximo de DPU (calculado com o número máximo de operadores e o tipo de operador) configurado no trabalho. Caso prefira o valor fixo nessas configurações, substitua esses parâmetros pelos seguintes parâmetros de trabalho:-
Chave:
--conf
-
Valor:
spark.sql.shuffle.partitions=200 --conf spark.default.parallelism=200
-
-
Para trabalhos de streaming, por padrão, o AWS Glue não tem o ajuste de escala automático em microlotes e requer vários microlotes para iniciar o ajuste de escala automático. Caso você queira habilitar o ajuste de escala automático em microlotes, forneça
--auto-scale-within-microbatch
. Para obter mais informações, consulte Referência de parâmetro de trabalho.
Monitorar o Auto Scaling com métricas do Amazon CloudWatch
As métricas do executor do CloudWatch estarão disponíveis para os trabalhos do AWS Glue 3.0 se você habilitar o Auto Scaling. As métricas podem ser usadas para monitorar a demanda e o uso otimizado dos executores em suas aplicações do Spark habilitadas com o Auto Scaling. Para obter mais informações, consulte Monitorar o AWS Glue usando métricas do Amazon CloudWatch.
Você também pode utilizar métricas de observabilidade do AWS Glue para obter insights sobre a utilização de recursos. Por exemplo, ao monitorar glue.driver.workerUtilization
, é possível monitorar quanto do recurso foi realmente usado com e sem o ajuste de escala automático. Em outro exemplo, monitorando glue.driver.skewness.job
e glue.driver.skewness.stage
, você pode ver como os dados estão distorcidos. Esses insights ajudarão a decidir quando ativar o ajuste de escala automático e ajustar as configurações. Para obter mais informações, consulte Monitoramento com o Monitoramento com métricas de observabilidade do AWS Glue.
-
glue.driver.ExecutorAllocationManager.executors.numberAllExecutors
-
glue.driver.ExecutorAllocationManager.executors.numberMaxNeededExecutors
Para obter mais detalhes sobre essas métricas, consulte Monitorar planejamento de capacidade de DPU.
nota
Não há métricas do executor do CloudWatch disponíveis para sessões interativas.

Monitorar o ajuste de escala automático com o Amazon CloudWatch Logs
Se estiver usando sessões interativas, poderá monitorar o número de executores habilitando Amazon CloudWatch Logs contínuos e pesquisando “executor” nos logs, ou usando a interface do usuário do Spark. Para fazer isso, use a mágica %%configure
para ativar o registro em log contínuo com enable auto scaling
.
%%configure{ "--enable-continuous-cloudwatch-log": "true", "--enable-auto-scaling": "true" }
No Amazon CloudWatch Logsevents, pesquise “executor” nos logs:

Monitoramento do Auto Scaling com o Spark UI
Com o Auto Scaling habilitado, você também pode monitorar os executores que estão sendo adicionados e removidos com o aumento e a redução dinâmicos da escala vertical de acordo com a demanda dos trabalhos do AWS Glue usando a interface de usuário do Spark no Glue. Para obter mais informações, consulte Habilitar a interface do usuário da Web do Apache Spark para trabalhos do AWS Glue.
Ao usar sessões interativas do caderno Jupyter, você pode executar a seguinte mágica para ativar o ajuste de escala automático com a IU do Spark:
%%configure{ "--enable-auto-scaling": "true", "--enable-continuous-cloudwatch-log": "true" }

Monitoramento do uso de DPU da execução de trabalho do Auto Scaling
É possível usar a visualização de execução de trabalhos do AWS Glue Studio para verificar o uso de DPU dos trabalhos de ajuste de escala automático.
-
Escolha Monitoramento no painel de navegação do AWS Glue Studio. A página de monitoramento será exibida.
-
Localize o quadro Job runs (Execuções de trabalho).
-
Acesse a execução de trabalho de seu interesse e localize a coluna DPU hours (Horas de DPU) para verificar o uso da execução de trabalho específica.
Limitações
O Auto Scaling de streaming do AWS Glue no momento não é compatível com a união de um DataFrame de streaming com um DataFrame estático criado fora do ForEachBatch
. Um DataFrame estático criado dentro do ForEachBatch
funcionará conforme esperado.