Utilizzo di Auto Scaling per AWS Glue
Il dimensionamento automatico è disponibile per il tuo ETL di AWS Glue, le sessioni interattive e i processi di streaming con AWS Glue versione 3.0 o successive.
Con Auto Scaling abilitato, otterrai i seguenti vantaggi:
-
AWS Glue aggiunge automaticamente e rimuove i lavoratori del cluster a seconda del parallelismo in ogni fase o microbatch del processo in esecuzione.
-
Elimina la necessità di sperimentare e decidere il numero di dipendenti da assegnare per i tuoi processi ETL di AWS Glue.
-
Con il numero massimo di worker dato, AWS Glue sceglierà le risorse della dimensione giusta per il carico di lavoro.
-
È possibile vedere come cambia la dimensione del cluster durante l' esecuzione del processo esaminando i parametri di CloudWatch nella pagina dei dettagli dell'esecuzione del processo in AWS Glue Studio.
Il dimensionamento automatico per i processi ETL di AWS Glue e i processi di streaming consentono l'aumento e la riduzione orizzontali on demand delle risorse di calcolo dei tuoi processi AWS Glue. Il dimensionamento verticale on demand consente di allocare solo le risorse di calcolo richieste inizialmente all'avvio dell'esecuzione del processo e anche di effettuare il provisioning delle risorse richieste in base alla domanda durante il processo.
Il dimensionamento automatico supporta anche la riduzione dinamica orizzontale delle risorse dei processi AWS Glue nel corso di un processo. Durante l'esecuzione di un processo, quando vengono richiesti più esecutori dall'applicazione Spark, verrà aggiunto al cluster un numero maggiore di dipendenti. Quando l'esecutore sarà inattivo e non avrà attività di calcolo in corso, l'esecutore e il dipendente corrispondente verranno rimossi.
Gli scenari comuni in cui il dimensionamento automatico aiuta a ridurre i costi e l'utilizzo delle applicazioni Spark includono:
-
un driver Spark che elenca un gran numero di file in Amazon S3 o esegue un caricamento mentre gli esecutori sono inattivi;
-
le fasi Spark che vengono eseguite con pochi esecutori a causa dell'eccesso di provisioning;
-
il disallineamento dei dati o la domanda di calcolo non uniforme tra le varie fasi di Spark.
Requisiti
Dimensionamento automatico è disponibile solo per AWS Glue versione 3.0 o successiva. Per utilizzare Dimensionamento automatico, consulta la Guida alla migrazione per migrare i processi esistenti a AWS Glue 3.0 o versioni successive oppure creare nuovi processi con AWS Glue 3.0 o versioni successive.
Il dimensionamento automatico è disponibile per i processi AWS Glue con i tipi di worker G.1X, G.2X, G.4X, G.8X, G.12X, G.16X, R.1X, R.2X, R.4X, R.8X o G.025X (solo per i processi di streaming). Le unità di elaborazioni dati (DPU) standard non sono supportate per il dimensionamento automatico.
Abilitazione dell'Auto Scaling in AWS Glue Studio
Nella scheda Dettagli processo in AWS Glue Studio, scegli il tipo Spark o Spark Streaming e Versione di Glue Glue 3.0 o successive. In seguito, una casella di controllo verrà visualizzata sotto Tipo di worker.
-
Seleziona l'opzione Dimensiona automaticamente il numero di worker.
-
Imposta la proprietà Numero massimo di dipendenti per definire il numero massimo di dipendenti che possono essere ceduti all'esecuzione del processo.
Abilitazione di Auto Scaling con il CLI o SDK di AWS
Per abilitare il dimensionamento automatico dall'AWS CLI per eseguire il processo, inserisci il comando start-job-run con la configurazione seguente:
{ "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... }
Una volta terminata l'esecuzione del processo ETL, puoi anche chiamareget-job-run per verificare l'effettivo utilizzo delle risorse del processo eseguito in secondi DPU. Nota: il nuovo campo DPUSeconds verrà visualizzato solo per i processi batch su AWS Glue 4.0 o versioni successive abilitate con il dimensionamento automatico. Questo campo non è supportato per i processi di streaming.
$ 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 } }
È inoltre possibile configurare le esecuzioni dei processi con Auto Scaling utilizzando l'SDKAWS Glue con la stessa configurazione.
Abilitazione del dimensionamento automatico con sessioni interattive
Per abilitare il dimensionamento automatico durante la creazione di processi AWS Glue con sessioni interattive, consulta Configuring AWS Glue interactive sessions.
Suggerimenti e considerazioni
Suggerimenti e considerazioni per eseguire il fine-tuning del dimensionamento automatico di AWS Glue:
-
Se non hai idea del valore iniziale del numero massimo di worker, puoi iniziare dal calcolo approssimativo spiegato in Estimate AWS Glue DPU. Non è necessario configurare un valore estremamente elevato nel numero massimo di worker per dati di volume molto basso.
-
Il dimensionamento automatico di AWS Glue configura
spark.sql.shuffle.partitionsespark.default.parallelismin base al numero massimo di DPU (calcolato con il numero massimo e il tipo di worker) configurato sul processo. Nel caso in cui preferisci il valore fisso su tali configurazioni, puoi sovrascrivere questi parametri con i seguenti parametri del processo:-
Chiave:
--conf -
Value (Valore):
spark.sql.shuffle.partitions=200 --conf spark.default.parallelism=200
-
-
Per i processi di streaming, per impostazione predefinita, AWS Glue non esegue il dimensionamento automatico all'interno di micro batch e ne richiede molti per avviare il dimensionamento automatico. Nel caso in cui desideri abilitare il dimensionamento automatico all'interno di micro batch, fornisci
--auto-scale-within-microbatch. Per ulteriori informazioni, consulta Riferimento ai parametri di processo.
Monitoraggio di Auto Scaling con i parametri di Amazon CloudWatch.
Se abiliti Dimensionamento automatico, saranno disponibili i parametri dell'esecutore di CloudWatch per i tuoi processi AWS Glue 3.0 o versioni successive. I parametri possono essere impiegati per monitorare la domanda e l'utilizzo ottimizzato degli esecutori nelle applicazioni Spark abilitate con Auto Scaling. Per ulteriori informazioni, consulta Monitoraggio di AWS Glue con i parametri di Amazon CloudWatch.
Puoi anche utilizzare le metriche di osservabilità di AWS Glue per ottenere informazioni sull'uso delle risorse. Ad esempio, tramite il monitoraggio di glue.driver.workerUtilization, puoi tracciare la quantità di risorse effettivamente utilizzate con e senza il dimensionamento automatico. Un altro esempio: monitorando glue.driver.skewness.job e glue.driver.skewness.stage, puoi osservare come i dati sono disallineati. Queste informazioni ti aiuteranno a decidere di abilitare il dimensionamento automatico ed eseguire il fine-tuning delle configurazioni. Per ulteriori informazioni, consulta Monitoring with Monitoraggio con parametri AWS Glue di osservabilità.
-
glue.driver.ExecutorAllocationManager.executors.numberAllExecutors
-
glue.driver.ExecutorAllocationManager.executors.numberMaxNeededExecutors
Per ulteriori dettagli su questi parametri, consulta Monitoraggio per la pianificazione della capacità DPU.
Nota
Le metriche dell'esecutore CloudWatch non sono disponibili per le sessioni interattive.
Monitoraggio del dimensionamento automatico con Amazon CloudWatch Logs
Se utilizzi sessioni interattive, puoi monitorare il numero di esecutori abilitando Amazon CloudWatch Logs continui e cercando “executor” nei log oppure usando l'interfaccia utente Spark. Per fare ciò, usa il comando magico %%configure per abilitare la registrazione continua insieme a enable auto scaling.
%%configure{ "--enable-continuous-cloudwatch-log": "true", "--enable-auto-scaling": "true" }
Negli eventi di Amazon CloudWatch Logs, cerca “executor” nei log:
Monitoraggio di Auto Scaling con interfaccia utente di Spark
Con Auto Scaling abilitato, puoi anche monitorare gli esecutori aggiunti e rimossi con il dimensionamento automatico verso l'alto e la riduzione verticale in base alla domanda nei tuoi processi AWS Glue l'interfaccia utente di Spark Glue. Per ulteriori informazioni, consulta Abilitazione dell'interfaccia utente Web di Apache Spark per processi AWS Glue.
Quando utilizzi sessioni interattive dal notebook Jupyter, puoi eseguire il comando magico per abilitare il dimensionamento automatico insieme all'interfaccia utente Spark:
%%configure{ "--enable-auto-scaling": "true", "--enable-continuous-cloudwatch-log": "true" }
Monitoraggio dell'utilizzo della DPU di esecuzione del processo Auto Scaling
È possibile utilizzare la Vista esecuzione dei processi AWS Glue Studio per controllare l'utilizzo della DPU da parte dei processi di dimensionamento automatico.
-
Scegli Monitoraggio dal riquadro di navigazione di AWS Glue Studio. Viene visualizzata la pagina Monitoraggio.
-
Scorri in basso fino all'elenco Job runs (Esecuzioni processo).
-
Passa all'esecuzione del processo che ti interessa e scorri fino alla colonna ore DPU per verificare l'utilizzo per l'esecuzione specifica del processo.
Limitazioni
AWS Glue che esegue lo streming di AutoScaling al momento non supporta DataFrame streaming insieme al DataFrame statico creato al di fuori di ForEachBatch. Un DataFrame statico creato all'interno di ForEachBatch funzionerà come previsto.