Usando o escalonamento automático para AWS Glue
O Auto Scaling está disponível para seu AWS Glue ETL, sessões interativas e trabalhos de streaming com AWS Glue versão 3.0 ou posterior.
Com o Auto Scaling habilitado, você obtém os seguintes benefícios:
-
AWS Glue adiciona e remove automaticamente trabalhadores do cluster, dependendo do paralelismo em cada estágio ou microlote da execução do trabalho.
-
Isso reduz a necessidade de você experimentar e decidir sobre o número de trabalhadores a serem designados para seu AWS Glue ETLempregos.
-
Com o número máximo de trabalhadores determinado, AWS Glue escolherá os recursos do tamanho certo para a carga de trabalho.
-
Você pode ver como o tamanho do cluster muda durante a execução do trabalho consultando CloudWatch as métricas na página de detalhes da execução do trabalho em AWS Glue Estúdio.
Auto Scaling para AWS Glue ETLe os trabalhos de streaming permitem a expansão e ampliação sob demanda dos recursos de computação de seu AWS Glue empregos. 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 Auto Scaling também suporta a escalabilidade dinâmica do AWS Glue recursos de trabalho ao longo de um trabalho. 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 está disponível somente para AWS Glue versão 3.0 ou posterior. Para usar o Auto Scaling, você pode seguir o guia de migração para migrar seus trabalhos existentes para AWS Glue versão 3.0 ou posterior ou crie novos trabalhos com AWS Glue versão 3.0 ou posterior.
O Auto Scaling está disponível para AWS Glue trabalhos com os tipos de trabalhadores G.1X
G.2X
G.4X
G.8X
,,, ou G.025X
(somente para trabalhos de streaming). DPUsOs padrões não são suportados.
Habilitando o Auto Scaling em AWS Glue Studio
Na guia Detalhes do trabalho em AWS Glue Studio, escolha o tipo como Spark ou Spark Streaming e a versão Glue igual 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.
Habilitando o Auto Scaling com o ou AWS CLI SDK
Para ativar o Auto Scaling a partir do AWS CLI para a execução do seu trabalho, execute start-job-run
com a seguinte configuração:
{ "JobName": "<your job name>", "Arguments": { "--enable-auto-scaling": "true" }, "WorkerType": "G.2X", // G.1X and G.2X are allowed for Auto Scaling Jobs "NumberOfWorkers": 20, // represents Maximum number of workers ...other job run configurations... }
Depois que a execução do ETL trabalho for concluída, você também poderá ligar get-job-run
para verificar o uso real dos recursos da execução do trabalho em DPU -segundos. Observação: o novo campo só DPUSecondsaparecerá para seus trabalhos em lote na AWS Glue versão 4.0 ou posterior habilitados com o Auto Scaling. 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 trabalhos com o Auto Scaling usando o AWS Glue SDKcom a mesma configuração.
Habilitar o Auto Scaling com sessões interativas
Para ativar o Auto Scaling ao criar AWS Glue trabalhos com sessões interativas, consulte Configuração de sessões interativas. AWS Glue
Dicas e considerações
Dicas e considerações para ajustar o Auto Scaling AWS Glue :
-
Caso você não tenha ideia do valor inicial do número máximo de trabalhadores, você pode começar com o cálculo aproximado explicado em Estimativa AWS Glue DPU. Não configure um valor extremamente alto no número máximo de operadores para dados de volume muito baixos.
-
AWS Glue O Auto Scaling configura
spark.sql.shuffle.partitions
e sespark.default.parallelism
baseia no número máximo de DPU (calculado com o número máximo de trabalhadores e o tipo de trabalhador) configurados 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, AWS Glue não é escalonado automaticamente em microlotes e requer vários microlotes para iniciar o escalonamento 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.
Monitoramento do Auto Scaling com métricas da Amazon CloudWatch
As métricas do CloudWatch executor estão disponíveis para você AWS Glue Tarefas 3.0 ou posteriores se você ativar 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 AWS Glue observabilidade 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.
-
cola. driver. ExecutorAllocationManager.executores. numberAllExecutors
-
cola. driver. ExecutorAllocationManager.executores. numberMaxNeededExecutores
Para obter mais detalhes sobre essas métricas, consulte Monitorar planejamento de capacidade de DPU.
nota
CloudWatch as métricas do executor não estão disponíveis para sessões interativas.
Monitoramento do Auto Scaling com Amazon Logs CloudWatch
Se você estiver usando sessões interativas, poderá monitorar o número de executores ativando Amazon CloudWatch Logs contínuos e pesquisando “executor” nos registros, ou usando a interface 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" }
Nos CloudWatch eventos do Amazon Logs, pesquise “executor” nos registros:
Monitoramento do Auto Scaling com o Spark UI
Com o Auto Scaling ativado, você também pode monitorar executores sendo adicionados e removidos com aumento e redução dinâmicos com base na demanda de seu AWS Glue trabalhos usando a interface do Glue Spark. 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" }
Monitorando o uso da execução de tarefas do Auto Scaling DPU
Você pode usar a visualização AWS Glue Studio Job run para verificar o DPU uso de suas tarefas do Auto Scaling.
-
Escolha Monitoramento no painel AWS Glue Studio de navegação. A página de monitoramento será exibida.
-
Localize o quadro Job runs (Execuções de trabalho).
-
Navegue até a execução da tarefa de seu interesse e vá até a coluna de DPU horas para verificar o uso da execução específica da tarefa.
Limitações
AWS Glue O Auto Scaling de streaming atualmente não suporta uma DataFrame junção de streaming com uma estática DataFrame criada fora do. ForEachBatch
Uma estática DataFrame criada dentro do ForEachBatch
funcionará conforme o esperado.