Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Monitoraggio per la pianificazione della capacità DPU
Puoi usare i parametri dei processi in AWS Glue per stimare il numero di unità di elaborazione dei dati (DPU) che è possibile usare per dimensionare un processo AWS Glue.
Nota
Questa pagina è applicabile solo a AWS Glue versioni 0.9 e 1.0. Versioni successive di AWS Glue contengono caratteristiche di risparmio che introducono ulteriori considerazioni durante la pianificazione della capacità.
Argomenti
Codice profilato
Lo script seguente legge una partizione Amazon Simple Storage Service (Amazon S3) contenente 428 file JSON GZIP. Lo script applica una mappatura per modificare i nomi dei campi, li converte e li scrive in Amazon S3 in un formato Apache Parquet. Puoi effettuare il provisioning di 10 DPU secondo le impostazioni di default ed eseguire questo processo.
datasource0 = glueContext.create_dynamic_frame.from_options(connection_type="s3", connection_options = {"paths": [input_path], "useS3ListImplementation":True,"recurse":True}, format="json") applymapping1 = ApplyMapping.apply(frame = datasource0, mappings = [(map_spec]) datasink2 = glueContext.write_dynamic_frame.from_options(frame = applymapping1, connection_type = "s3", connection_options = {"path": output_path}, format = "parquet")
Visualizzazione dei parametri profilati nella console AWS Glue
Esecuzione processo 1: in questa esecuzione del processo esaminiamo come individuare se mancano DPU nel cluster. La funzionalità di esecuzione del processo in AWS Glue mostra il numero totale di esecutori attivi, il numero di fasi completate e il numero massimo di esecutori necessari.
Il numero massimo di executor necessari viene calcolato aggiungendo il numero totale di attività in esecuzione e attività in sospeso e dividendo per le attività per executor. Questo risultato è una misura del numero totale di executor necessari per soddisfare il carico corrente.
Al contrario, il numero di executor attivi misura quanti executor stanno eseguendo attivamente attività Apache Spark. Con l'avanzamento del processo, il numero massimo di executor necessari può cambiare e in genere diminuisce verso la fine del processo, in quanto le attività in coda si riducono.
La linea rossa orizzontale nel grafico seguente mostra il numero massimo di executor allocati, che dipende dal numero di unità DPU allocate al processo. In questo caso, puoi allocare 10 DPU per l'esecuzione del processo. Una DPU è riservata alla gestione. Nove DPU eseguono due executor ciascuna e un executor è riservato per il driver Spark. Il driver Spark viene eseguito all'interno dell'applicazione principale. Pertanto, il numero massimo di executor allocati è 2*9 - 1 = 17 executor.
Come mostra il grafico, il numero massimo di executor parte da 107 all'inizio del processo, mentre il numero di executor attivi rimane 17. Ciò corrisponde al numero massimo di executor allocati con 10 DPU. Il rapporto tra il numero massimo di executor necessari e il numero massimo di executor allocati (aggiungendo 1 a entrambi per il driver Spark) indica il fattore di provisioning in difetto: 108/18 = 6x. È possibile effettuare il provisioning di 6 (con il rapporto di provisioning) * 9 (capacità DPU corrente - 1) +1 DPU = 55 DPU per dimensionare il processo per eseguirlo con il massimo parallelismo e terminare più velocemente.
La console AWS Glue mostra i parametri dettagliati dei processi come una linea statica che rappresenta il numero massimo originale di esecutori allocati. La console calcola il numero massimo di esecutori allocati dalla definizione del processo per i parametri. Al contrario, per i parametri dettagliati di esecuzione dei processi, la console calcola il numero massimo di esecutori allocati dalla configurazione di esecuzione del processo, in particolare le DPU allocate per tale esecuzione. Per visualizzare i parametri dell'esecuzione di un singolo processo, seleziona l'esecuzione del processo e scegli View run metrics (Visualizza parametri di esecuzione).
Osservando i byte Amazon S3 letti e scritti, si nota che il processo impiega tutti e sei i minuti per lo streaming in ingresso dei dati da Amazon S3 e la scrittura in uscita in parallelo. Tutti i core nelle DPU allocate leggono e scrivono in Amazon S3. Il numero massimo di executor necessari (107), corrisponde anche al numero di file nel percorso di input Amazon S3 path428. Ogni executor può avviare quattro attività Spark per elaborare quattro file di input (JSON GZIP).
Determinazione della capacità DPU ottimale
In base ai risultati dell'esecuzione del processo precedente, puoi aumentare il numero totale di DPU allocate a 55 ed esaminare le prestazioni del processo. Il processo viene completato in meno di tre minuti, ossia in metà del tempo richiesto in precedenza. Il dimensionamento del processo non è lineare in questo caso, perché si tratta di un processo a esecuzione breve. I processi con attività di lunga durata o con un numero elevato di attività (un numero elevato di executor necessari massimi) traggono vantaggio da un aumento delle prestazioni con un aumento delle DPU il più lineare possibile.
Come mostra l'immagine seguente, il numero totale di executor attivi raggiunge il numero massimo di executor allocati (107). Analogamente, il numero massimo di executor necessari non supera mai il numero massimo di executor allocati. Il numero massimo di executor necessari viene calcolato dai conteggi di attività in esecuzione e in attesa, quindi potrebbe essere inferiore al numero di executor attivi. Questo perché non ci possono essere executor che sono parzialmente o completamente inattivi per un breve periodo di tempo e non sono ancora stati rimossi.
Questa esecuzione del processo usa una quantità di executor sei volte maggiore per leggere e scrivere da Amazon S3 in parallelo. Di conseguenza, questa esecuzione del processo usa più larghezza di banda Amazon S3 per le operazioni di scrittura e lettura e termina più velocemente.
Identificazione delle DPU per le quali è stato effettuato un provisioning in eccesso
Puoi quindi determinare se il dimensionamento del processo con l'aumento a 100 DPU (99 * 2 = 198 executor) permette ulteriore scalabilità. Come mostra il grafico seguente, il processo richiede ancora tre minuti per giungere al termine. Analogamente, il processo non viene dimensionato oltre i 107 executor (configurazione di 55 DPU) e i rimanenti 91 executor sono in eccesso e non vengono usati. Questo mostra che l'aumento del numero di DPU non sempre migliora le prestazioni, come dimostrato dal numero massimo di executor necessari.
Confronto tra differenze di tempo
Le tre esecuzioni del processo illustrate nella tabella seguente riepilogano i tempi di esecuzione del processo per 10 DPU, 55 DPU e 100 DPU. Puoi individuare la capacità DPU per migliorare il tempo di esecuzione del processo usando le stime definite monitorando la prima esecuzione del processo.
Job ID | Numero di DPU | Ora di esecuzione |
---|---|---|
jr_c894524c8ef5048a4d9... | 10 | 6 min. |
jr_1a466cf2575e7ffe6856... | 55 | 3 min. |
jr_34fa1ed4c6aa9ff0a814... | 100 | 3 min. |