Ottimizzazione delle prestazioni per Apache Airflow su Amazon MWAA - Amazon Managed Workflows for Apache Airflow

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

Ottimizzazione delle prestazioni per Apache Airflow su Amazon MWAA

Questa pagina descrive le best practice che consigliamo per ottimizzare le prestazioni di un ambiente Amazon Managed Workflows for Apache Airflow utilizzando. Utilizzo delle opzioni di configurazione di Apache Airflow su Amazon MWAA

Aggiungere un'opzione di configurazione Apache Airflow

La procedura seguente illustra i passaggi per aggiungere un'opzione di configurazione Airflow al proprio ambiente.

  1. Apri la pagina Ambienti sulla MWAA console Amazon.

  2. Scegli un ambiente.

  3. Scegli Modifica.

  4. Scegli Next (Successivo).

  5. Scegli Aggiungi configurazione personalizzata nel riquadro delle opzioni di configurazione Airflow.

  6. Scegli una configurazione dall'elenco a discesa e inserisci un valore, oppure digita una configurazione personalizzata e inserisci un valore.

  7. Scegli Aggiungi configurazione personalizzata per ogni configurazione che desideri aggiungere.

  8. Seleziona Salva.

Per ulteriori informazioni, consulta Utilizzo delle opzioni di configurazione di Apache Airflow su Amazon MWAA.

Pianificatore Apache Airflow

Lo scheduler Apache Airflow è un componente fondamentale di Apache Airflow. Un problema con lo scheduler può DAGs impedire l'analisi e la pianificazione delle attività. Per ulteriori informazioni sull'ottimizzazione dello scheduler di Apache Airflow, consulta Ottimizzazione delle prestazioni dello scheduler nel sito Web della documentazione di Apache Airflow.

Parametri

Questa sezione descrive le opzioni di configurazione disponibili per lo scheduler Apache Airflow e i relativi casi d'uso.

Apache Airflow v2
Versione Opzione di configurazione Predefinito Descrizione Caso d'uso

v2

celery.sync_parallelism

1

Il numero di processi utilizzati da Celery Executor per sincronizzare lo stato delle attività.

È possibile utilizzare questa opzione per prevenire i conflitti di coda limitando i processi utilizzati da Celery Executor. Per impostazione predefinita, viene impostato un valore per 1 prevenire errori nella consegna dei registri delle attività ai registri. CloudWatch Impostare il valore su 0 significa utilizzare il numero massimo di processi, ma potrebbe causare errori durante la consegna dei registri delle attività.

v2

scheduler.idle_sleep_time

1

Il numero di secondi di attesa tra un'elaborazione consecutiva dei DAG file nel «ciclo» di Scheduler.

È possibile utilizzare questa opzione per liberare l'CPUutilizzo dello Scheduler aumentando il tempo di inattività dello Scheduler dopo aver terminato il recupero dei risultati dell'DAGanalisi, la ricerca e la messa in coda delle attività e l'esecuzione delle attività in coda nell'Executor. L'aumento di questo valore consuma il numero di thread di Scheduler eseguiti su un ambiente in Apache Airflow v2 e Apache Airflow v1. scheduler.parsing_processes scheduler.max_threads Ciò può ridurre la capacità di analisi degli Scheduler e aumentare il tempo necessario per la DAGs visualizzazione nel server Web. DAGs

v2

scheduler.max_dagruns_to_create_per_loop

10

Il numero massimo di elementi da creare per ogni «ciclo» di Scheduler. DAGs DagRuns

È possibile utilizzare questa opzione per liberare risorse per la pianificazione delle attività diminuendo il numero massimo di «loop» DagRunsdi Scheduler.

v2

scheduler.parsing_processes

Impostato utilizzando la seguente formula: per impostazione predefinita. (2 * number of vCPUs) - 1

Il numero di thread che lo Scheduler può eseguire in parallelo alla pianificazione. DAGs

È possibile utilizzare questa opzione per liberare risorse diminuendo il numero di processi che lo Scheduler esegue in parallelo per analizzare. DAGs Consigliamo di mantenere questo numero basso se l'DAGanalisi influisce sulla pianificazione delle attività. È necessario specificare un valore inferiore al CPU conteggio v nel proprio ambiente. Per ulteriori informazioni, consultare Limiti.

Limiti

Questa sezione descrive i limiti da considerare quando si modificano i parametri predefiniti per lo scheduler.

scheduler.parsing_processes, scheduler.max_threads

Sono consentiti due thread per v per una classe di ambiente. CPU Almeno un thread deve essere riservato allo scheduler di una classe di ambiente. Se si nota un ritardo nella pianificazione delle attività, potrebbe essere necessario aumentare la classe di ambiente. Ad esempio, un ambiente di grandi dimensioni ha un'istanza del contenitore CPU Fargate 4 v come scheduler. Ciò significa che è disponibile un massimo di thread 7 totali da utilizzare per altri processi. Cioè, due thread moltiplicati per quattrovCPUs, meno uno per lo scheduler stesso. Il valore specificato in scheduler.max_threads e non scheduler.parsing_processes deve superare il numero di thread disponibili per una classe di ambiente (come illustrato di seguito:

  • mw1.small — Non deve superare il numero di 1 thread per altri processi. Il thread rimanente è riservato allo Scheduler.

  • mw1.medium — Non deve superare i 3 thread per altri processi. Il thread rimanente è riservato allo Scheduler.

  • mw1.large — Non deve superare i 7 thread per altri processi. Il thread rimanente è riservato allo Scheduler.

DAGcartelle

Apache Airflow Scheduler esegue la scansione continua della DAGs cartella nel tuo ambiente. Qualsiasi plugins.zip file contenuto o file Python (.py) contenente istruzioni di importazione «airflow». Tutti DAG gli oggetti Python risultanti vengono quindi inseriti in un file DagBagaffinché quel file venga elaborato dallo Scheduler per determinare quali attività, se del caso, devono essere pianificate. L'analisi dei file Dag avviene indipendentemente dal fatto che i file contengano oggetti validi. DAG

Parametri

Questa sezione descrive le opzioni di configurazione disponibili per la DAGs cartella e i relativi casi d'uso.

Apache Airflow v2
Versione Opzione di configurazione Predefinito Descrizione Caso d'uso

v2

scheduler.dag_dir_list_interval

300 secondi

Il numero di secondi in cui la cartella deve essere scansionata alla ricerca di nuovi file. DAGs

È possibile utilizzare questa opzione per liberare risorse aumentando il numero di secondi di analisi della DAGs cartella. Ti consigliamo di aumentare questo valore se riscontri tempi di analisi lunghitotal_parse_time metrics, che potrebbero essere dovuti a un numero elevato di file nella cartellaDAGs.

v2

scheduler.min_file_process_interval

30 secondi

Il numero di secondi dopo i quali lo scheduler analizza a e gli aggiornamenti a vengono riflessi. DAG DAG

È possibile utilizzare questa opzione per liberare risorse aumentando il numero di secondi che lo scheduler attende prima di analizzare un. DAG Ad esempio, se si specifica un valore di30, il DAG file viene analizzato ogni 30 secondi. Si consiglia di mantenere questo numero elevato per ridurre l'CPUutilizzo dell'ambiente.

DAGfile

Come parte del ciclo di pianificazione di Apache Airflow, DAG i singoli file vengono analizzati per estrarre oggetti Python. DAG In Apache Airflow v2 e versioni successive, lo scheduler analizza un numero massimo di processi di analisi contemporaneamente. Il numero di secondi specificato in scheduler.min_file_process_interval deve trascorrere prima che lo stesso file venga nuovamente analizzato.

Parametri

Questa sezione descrive le opzioni di configurazione disponibili per i DAG file Apache Airflow e i relativi casi d'uso.

Apache Airflow v2
Versione Opzione di configurazione Predefinito Descrizione Caso d'uso

v2

core.dag_file_processor_timeout

50 secondi

Il numero di secondi prima del DagFileProcessortimeout dell'elaborazione di un DAG file.

È possibile utilizzare questa opzione per liberare risorse aumentando il tempo necessario prima del DagFileProcessortimeout. Ti consigliamo di aumentare questo valore se riscontri dei timeout nei registri di DAG elaborazione che impediscono il caricamento di file DAGs validi.

v2

core.dagbag_import_timeout

30 secondi

Il numero di secondi prima dell'importazione di un file Python scade.

Puoi usare questa opzione per liberare risorse aumentando il tempo necessario prima che lo Scheduler scada durante l'importazione di un file Python per estrarre gli oggetti. DAG Questa opzione viene elaborata come parte del «ciclo» dello Scheduler e deve contenere un valore inferiore al valore specificato in. core.dag_file_processor_timeout

v2

core.min_serialized_dag_update_interval

30

Il numero minimo di secondi dopo il quale vengono aggiornati i serializzati nel database. DAGs

È possibile utilizzare questa opzione per liberare risorse aumentando il numero di secondi dopo i quali vengono aggiornati i dati serializzati DAGs nel database. Si consiglia di aumentare questo valore se si dispone di DAGs un numero elevato o complessoDAGs. L'aumento di questo valore riduce il carico sullo Scheduler e sul database man mano che DAGs vengono serializzati.

v2

core.min_serialized_dag_fetch_interval

10

Il numero di secondi in cui una serializzata viene recuperata nuovamente dal database quando è già stata caricata in. DAG DagBag

È possibile utilizzare questa opzione per liberare risorse aumentando il numero di secondi di recupero di un file DAG serializzato. Il valore deve essere superiore al valore specificato in core.min_serialized_dag_update_interval per ridurre le velocità di «scrittura» del database. L'aumento di questo valore riduce il carico sul server Web e sul database man mano che DAGs vengono serializzati.

Attività

Lo scheduler e gli operatori di Apache Airflow sono entrambi coinvolti nelle attività di attesa e disattesa. Lo scheduler prende le attività analizzate pronte per essere pianificate dallo stato Nessuno allo stato Pianificato. L'esecutore, anch'esso in esecuzione nel contenitore scheduler di Fargate, mette in coda tali attività e ne imposta lo stato su In coda. Quando i lavoratori hanno capacità, preleva l'operazione dalla coda e imposta lo stato su In esecuzione, che successivamente modifica lo stato in Operazione completata o Non riuscita a seconda che l'attività abbia esito positivo o negativo.

Parametri

Questa sezione descrive le opzioni di configurazione disponibili per le attività di Apache Airflow e i relativi casi d'uso.

Le opzioni di configurazione predefinite che Amazon MWAA sostituisce sono contrassegnate in red.

Apache Airflow v2
Versione Opzione di configurazione Predefinito Descrizione Caso d'uso

v2

core.parallelism

Impostato dinamicamente in base a. (maxWorkers * maxCeleryWorkers) / schedulers * 1.5

Il numero massimo di istanze di attività che possono avere lo stato «In esecuzione».

È possibile utilizzare questa opzione per liberare risorse aumentando il numero di istanze di attività che possono essere eseguite contemporaneamente. Il valore specificato deve essere il numero di Worker disponibili «volte» la densità delle attività Workers. Ti consigliamo di modificare questo valore solo quando vedi un gran numero di attività bloccate nello stato «In esecuzione» o «In coda».

v2

core.dag_concurrency

10000

Il numero di istanze di attività che è possibile eseguire contemporaneamente per ciascuna. DAG

È possibile utilizzare questa opzione per liberare risorse aumentando il numero di istanze di attività consentite per l'esecuzione simultanea. Ad esempio, se si dispone di cento attività parallele DAGs con dieci e si desidera che tutte DAGs vengano eseguite contemporaneamente, è possibile calcolare il parallelismo massimo come il numero di Worker disponibili «volte» la densità delle attività Workerscelery.worker_concurrency, diviso per il numero di DAGs (ad esempio 100).

v2

core.execute_tasks_new_python_interpreter

True

Determina se Apache Airflow esegue le attività biforcando il processo principale o creando un nuovo processo Python.

Quando è impostato suTrue, Apache Airflow riconosce le modifiche apportate ai plugin come un nuovo processo Python creato per eseguire attività.

v2

celery.worker_concurrency

N/D

Amazon MWAA sostituisce l'installazione di base Airflow per questa opzione per scalare Workers come parte del suo componente di scalabilità automatica.

Any value specified for this option is ignored.

v2

celery.worker_autoscale

mw1.small - 5,0

mw1.medium - 10,0

mw1.large - 20,0

mw1.xlarge - 40,0

mw1.2xlarge - 80,0

La concorrenza tra compiti per i lavoratori.

È possibile utilizzare questa opzione per liberare risorse riducendo la maximum concomitanza delle minimum attività dei lavoratori. I lavoratori accettano fino alle attività maximum simultanee configurate, indipendentemente dal fatto che vi siano risorse sufficienti per farlo. Se le attività sono pianificate senza risorse sufficienti, le attività falliscono immediatamente. Si consiglia di modificare questo valore per le attività che richiedono molte risorse riducendo i valori a un valore inferiore a quello predefinito per consentire una maggiore capacità per attività.