Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
Questa pagina fornisce la procedura di risoluzione dei problemi e informazioni sui problemi comuni degli scheduler di Airflow.
Identificare la fonte del problema
Per iniziare la risoluzione dei problemi, identifica se il problema si verifica al momento dell'analisi del DAG o durante l'elaborazione delle attività al momento dell'esecuzione. Per ulteriori informazioni sul tempo di analisi e sul tempo di esecuzione, consulta Differenza tra tempo di analisi e tempo di esecuzione del DAG.
Controllare i log del processore DAG
Se hai DAG complessi, il processore DAG, eseguito dall'elaboratore, potrebbe non analizzare tutti i DAG. Ciò potrebbe causare molti problemi con i seguenti sintomi.
Sintomi:
Se il Processore DAG riscontra problemi durante l'analisi dei DAG, potrebbe verificarsi una combinazione dei problemi elencati di seguito. Se i DAG vengono generati in modo dinamico, questi problemi potrebbero avere un impatto maggiore rispetto ai DAG statici.
I DAG non sono visibili nell'interfaccia utente di Airflow e nell'interfaccia utente di DAG.
L'esecuzione dei DAG non è pianificata.
Sono presenti errori nei log del processore DAG, ad esempio:
dag-processor-manager [2023-04-21 21:10:44,510] {manager.py:1144} ERROR - Processor for /home/airflow/gcs/dags/dag-example.py with PID 68311 started at 2023-04-21T21:09:53.772793+00:00 has timed out, killing it.
o
dag-processor-manager [2023-04-26 06:18:34,860] {manager.py:948} ERROR - Processor for /home/airflow/gcs/dags/dag-example.py exited with return code 1.
Gli scheduler di Airflow presentano problemi che causano i loro riavvii.
Le attività Airflow pianificate per l'esecuzione vengono annullate e le esecuzioni dei DAG per i DAG di cui non è stato possibile eseguire l'analisi potrebbero essere contrassegnate come
failed
. Ad esempio:airflow-scheduler Failed to get task '<TaskInstance: dag-example.task1--1 manual__2023-04-17T10:02:03.137439+00:00 [removed]>' for dag 'dag-example'. Marking it as removed.
Soluzione:
Aumenta i parametri relativi all'analisi del DAG:
Aumenta dagbag-import-timeout ad almeno 120 secondi (o più, se necessario).
Aumenta dag-file-processor-timeout fino ad almeno 180 secondi (o più, se necessario). Questo valore deve essere superiore a
dagbag-import-timeout
.
Correggi o rimuovi i DAG che causano problemi al processore DAG.
Ispezione dei tempi di analisi del DAG
Per verificare se il problema si verifica al momento dell'analisi del DAG, segui questi passaggi.
Console
Nella console Google Cloud puoi utilizzare la pagina Monitoraggio e la scheda Log per controllare i tempi di analisi del DAG.
Controlla i tempi di analisi del DAG con la pagina di monitoraggio di Cloud Composer:
Nella console Google Cloud, vai alla pagina Ambienti.
Nell'elenco degli ambienti, fai clic sul nome dell'ambiente. Viene visualizzata la pagina Monitoraggio.
Nella scheda Monitoraggio, esamina il grafico Tempo totale di analisi per tutti i file DAG nella sezione Esecuzioni DAG e identifica i possibili problemi.
Controlla i tempi di analisi del DAG con la scheda Log di Cloud Composer:
Nella console Google Cloud, vai alla pagina Ambienti.
Nell'elenco degli ambienti, fai clic sul nome dell'ambiente. Viene visualizzata la pagina Monitoraggio.
Vai alla scheda Log e dalla struttura ad albero di navigazione Tutti i log, seleziona la sezione Gestore processore DAG.
Esamina i log
dag-processor-manager
e identifica i possibili problemi.
gcloud - Airflow 1
Utilizza il comando list_dags
con il flag -r
per visualizzare il tempo di analisi per tutti i DAG.
gcloud composer environments run ENVIRONMENT_NAME \
--location LOCATION \
list_dags -- -r
Sostituisci:
ENVIRONMENT_NAME
con il nome dell'ambiente.LOCATION
con la regione in cui si trova l'ambiente.
L'output del comando è simile al seguente:
-------------------------------------------------------------------
DagBag loading stats for /home/airflow/gcs/dags
-------------------------------------------------------------------
Number of DAGs: 5
Total task number: 13
DagBag parsing time: 0.6765180000000001
-----------+----------+---------+----------+-----------------------
file | duration | dag_num | task_num | dags
-----------+----------+---------+----------+-----------------------
/dag_1.py | 0.6477 | 1 | 2 | ['dag_1']
/dag_2.py | 0.018652 | 1 | 2 | ['dag_2']
/dag_3.py | 0.004024 | 1 | 6 | ['dag_3']
/dag_4.py | 0.003476 | 1 | 2 | ['dag_4']
/dag_5.py | 0.002666 | 1 | 1 | ['dag_5']
-----------+----------+---------+----------+-----------------------
Cerca il valore DagBag parsing time (Tempo di analisi di DagBag). Un valore elevato potrebbe indicare che uno dei tuoi DAG non è implementato in modo ottimale. Dalla tabella di output puoi identificare i DAG con un tempo di analisi lungo.
gcloud - Airflow 2
Utilizza il comando dags report
per visualizzare il tempo di analisi di tutti i DAG.
gcloud composer environments run ENVIRONMENT_NAME \
--location LOCATION \
dags report
Sostituisci:
ENVIRONMENT_NAME
con il nome dell'ambiente.LOCATION
con la regione in cui si trova l'ambiente.
L'output del comando è simile al seguente:
Executing within the following Kubernetes cluster namespace: composer-2-0-31-airflow-2-3-3
file | duration | dag_num | task_num | dags
======================+================+=========+==========+===================
/manydagsbig.py | 0:00:00.038334 | 2 | 10 | serial-0,serial-0
/airflow_monitoring.py| 0:00:00.001620 | 1 | 1 | airflow_monitoring
Cerca il valore duration per ciascuno dei DAG elencati nella tabella. Un valore elevato potrebbe indicare che uno dei tuoi DAG non è implementato in modo ottimale. Dalla tabella di output puoi identificare i DAG che hanno un tempo di analisi lungo.
Monitoraggio delle attività in esecuzione e in coda
Per controllare se ci sono attività bloccate in una coda, segui questi passaggi.
Nella console Google Cloud, vai alla pagina Ambienti.
Nell'elenco degli ambienti, fai clic sul nome dell'ambiente. Viene visualizzata la pagina Dettagli dell'ambiente.
Vai alla scheda Monitoraggio.
Nella scheda Monitoraggio, esamina il grafico Attività Airflow nella sezione Esecuzioni DAG e identifica i possibili problemi. Le attività di Airflow sono attività in stato di coda in Airflow e possono essere inviate alla coda dell'intermediario Celery o Kubernetes Executor. Le attività nella coda Celery sono istanze di attività che vengono inserite nella coda dell'intermediario Celery.
Risoluzione dei problemi al momento dell'analisi del DAG
Le sezioni seguenti descrivono i sintomi e le potenziali correzioni di alcuni problemi comuni al momento dell'analisi del DAG.
Analisi e pianificazione dei DAG in Cloud Composer 1 e Airflow 1
L'efficienza dell'analisi DAG è stata migliorata notevolmente in Airflow 2. Se riscontri problemi di prestazioni relativi all'analisi e alla pianificazione dei DAG, valuta la possibilità di eseguire la migrazione ad Airflow 2.
In Cloud Composer 1, lo scheduler viene eseguito sui nodi del cluster insieme ad altri componenti di Cloud Composer. Per questo motivo, il carico dei singoli nodi del cluster potrebbe essere superiore o inferiore rispetto ad altri nodi. Le prestazioni del programmatore (analisi e pianificazione del DAG) possono variare a seconda del nodo in cui viene eseguito. Inoltre, un singolo nodo in cui viene eseguito il programmatore può cambiare a seguito di operazioni di upgrade o manutenzione. Questo limite è stato risolto in Cloud Composer 2, dove puoi allocare risorse di CPU e memoria allo scheduler e le prestazioni dello scheduler non dipendono dal carico dei nodi del cluster.
Numero limitato di thread
Consentire al gestore del processore DAG (la parte dello scheduler che elabora i file DAG) di utilizzare solo un numero limitato di thread potrebbe influire sul tempo di analisi del DAG.
Per risolvere il problema, esegui l'override delle seguenti opzioni di configurazione di Airflow:
Per Airflow 1.10.12 e versioni precedenti, sostituisci il parametro
max_threads
:Sezione Chiave Valore Note scheduler
max_threads
NUMBER_OF_CORES_IN_MACHINE - 1
Sostituisci NUMBER_OF_CORES_IN_MACHINE
con il numero di core
nelle macchine dei nodi worker.Per Airflow 1.10.14 e versioni successive, sostituisci il parametro
parsing_processes
:Sezione Chiave Valore Note scheduler
parsing_processes
NUMBER_OF_CORES_IN_MACHINE - 1
Sostituisci NUMBER_OF_CORES_IN_MACHINE
con il numero di core
nelle macchine dei nodi worker.
Numero e distribuzione temporale delle attività
Airflow è noto per avere problemi con la pianificazione di un numero elevato di piccole attività. In questi casi, ti consigliamo di optare per un numero inferiore di attività più consolidate.
Anche la pianificazione di un numero elevato di DAG o attività contemporaneamente potrebbe essere una possibile fonte di problemi. Per evitare questo problema, distribuisci le attività in modo più uniforme nel tempo.
Risolvere i problemi relativi alle attività in esecuzione e in coda
Le sezioni seguenti descrivono i sintomi e le potenziali soluzioni per alcuni problemi comuni relativi alle attività in esecuzione e in coda.
Le code di attività sono troppo lunghe
In alcuni casi, una coda di attività potrebbe essere troppo lunga per il programmatore. Per informazioni su come ottimizzare i parametri di worker e celery, consulta la sezione su come scalare l'ambiente Cloud Composer insieme alla tua attività.
Utilizzo della funzionalità TimeTable dello scheduler Airflow
A partire da Airflow 2.2, puoi definire una tabella di tempo per un DAG utilizzando una nuova funzionalità chiamata TimeTable.
Puoi definire una tabella di tempo utilizzando uno dei seguenti metodi:
Risorse cluster limitate
Questa sezione si applica solo a Cloud Composer 1.
Potresti riscontrare problemi di prestazioni se il cluster GKE del tuo ambiente è troppo piccolo per gestire tutti i DAG e le attività. In questo caso, prova una delle seguenti soluzioni:
- Crea un nuovo ambiente con un tipo di macchina che offre un rendimento migliore e esegui la migrazione dei DAG al suo interno.
- Crea altri ambienti Cloud Composer e suddividi i DAG tra di loro.
- Modifica il tipo di macchina per i nodi GKE, come descritto in Eseguire l'upgrade del tipo di macchina per i nodi GKE. Poiché questa procedura è soggetta a errori, è l'opzione meno consigliata.
- Esegui l'upgrade del tipo di macchina dell'istanza Cloud SQL che esegue il database Airflow nel tuo ambiente, ad esempio utilizzando i comandi
gcloud composer environments update
. Il rendimento ridotto del database Airflow potrebbe essere la causa della lentezza dello scheduler.
Evita la pianificazione delle attività durante le finestre di manutenzione
Puoi definire periodi di manutenzione specifici per il tuo ambiente. Durante questi periodi di tempo, si verificano eventi di manutenzione per Cloud SQL e GKE.
Impostare lo scheduler di Airflow in modo che ignori i file non necessari
Puoi migliorare le prestazioni del programmatore Airflow ignorando i file non necessari nella cartella DAG. Il programmatore Airflow ignora i file e le cartelle
specificati nel file .airflowignore
.
Per fare in modo che lo scheduler Airflow ignori i file non necessari:
- Crea un file
.airflowignore
. - In questo file, elenca i file e le cartelle che devono essere ignorati.
- Carica questo file nella cartella
/dags
nel bucket del tuo ambiente.
Per ulteriori informazioni sul formato file .airflowignore
, consulta la documentazione di Airflow.
Lo scheduler di Airflow elabora i DAG in pausa
Gli utenti di Airflow mettono in pausa i DAG per evitarne l'esecuzione. In questo modo vengono risparmiati i cicli di elaborazione dei worker Airflow.
Lo scheduler di Airflow continuerà ad analizzare i DAG in pausa. Se vuoi davvero migliorare il rendimento dello scheduler di Airflow, utilizza .airflowignore
o elimina i DAG in pausa dalla cartella DAG.
Utilizzo di "wait_for_downstream" nei DAG
Se imposti il parametro wait_for_downstream
su True
nei DAG, per il completamento di un'attività devono essere completate anche tutte le attività immediatamente a valle di questa attività. Ciò significa che l'esecuzione delle attività appartenenti a una determinata esecuzione del DAG potrebbe essere rallentata dall'esecuzione delle attività dell'esecuzione del DAG precedente. Scopri di più nella documentazione di Airflow.
Le attività in coda per troppo tempo verranno annullate e riprogrammate
Se un'attività Airflow rimane in coda per troppo tempo, lo scheduler la riprogramma di nuovo per l'esecuzione (nelle versioni di Airflow precedenti alla 2.3.1, l'attività viene anche contrassegnata come non riuscita e viene eseguito un nuovo tentativo se è idonea).
Un modo per osservare i sintomi di questa situazione è esaminare il grafico con il numero di attività in coda (scheda "Monitoraggio" nell'interfaccia utente di Cloud Composer) e se gli picchi in questo grafico non diminuiscono entro circa due ore, le attività molto probabilmente verranno riprogrammate (senza log) seguite da voci di log "Le attività adottate erano ancora in attesa…" nei log dello scheduler. In questi casi, potresti visualizzare il messaggio "File di log non trovato…" nei log delle attività Airflow perché l'attività non è stata eseguita.
In genere, questo comportamento è previsto e l'istanza successiva dell'attività pianificata deve essere eseguita in base alla pianificazione. Se noti molti di questi casi nei tuoi ambienti Cloud Composer, potrebbe significare che non sono presenti worker Airflow sufficienti per elaborare tutte le attività pianificate.
Risoluzione: per risolvere il problema, devi assicurarti che nei worker di Airflow sia sempre presente la capacità necessaria per eseguire le attività in coda. Ad esempio, puoi aumentare il numero di worker o worker_concurrency. Puoi anche ottimizzare il parallelismo o i pool per impedire la formazione di code di attività superiori alla capacità di cui disponi.
Occasionalmente, le attività non aggiornate potrebbero bloccare l'esecuzione di un DAG specifico
In genere, lo scheduler di Airflow dovrebbe essere in grado di gestire le situazioni in cui sono presenti attività non aggiornate nella coda e per qualche motivo non è possibile eseguirle correttamente (ad es. un DAG a cui appartengono le attività non aggiornate è stato eliminato).
Se queste attività non aggiornate non vengono eliminate dal programma, potrebbe essere necessario eliminarle manualmente. Puoi farlo, ad esempio, nell'interfaccia utente di Airflow: vai a (Menu > Browser > Istanze attività), trova le attività in coda appartenenti a un DAG obsoleto ed eliminale.
Per risolvere il problema, esegui l'upgrade dell'ambiente alla versione 2.1.12 o successive di Cloud Composer.
Approccio di Cloud Composer al parametro [scheduler]min_file_process_interval
Cloud Composer cambia il modo in cui [scheduler]min_file_process_interval
viene utilizzato dallo scheduler di Airflow.
Airflow 1
Nel caso di Cloud Composer che utilizza Airflow 1, gli utenti possono impostare il valore di [scheduler]min_file_process_interval
tra 0 e 600 secondi. I valori superiori a 600 secondi generano gli stessi risultati che se [scheduler]min_file_process_interval
fosse impostato su 600 secondi.
Airflow 2
In Airflow 2, [scheduler]min_file_process_interval
può essere utilizzato solo con le versioni 1.19.9 e 2.0.26 o successive
Versioni di Cloud Composer precedenti a 1.19.9 e 2.0.26
In queste versioni,
[scheduler]min_file_process_interval
viene ignorato.Versioni Cloud Composer 1.19.9 o 2.0.26 o versioni più recenti
Lo scheduler di Airflow viene riavviato dopo un determinato numero di volte in cui tutti i DAG sono stati pianificati e il parametro
[scheduler]num_runs
controlla quante volte viene eseguito dallo scheduler. Quando Scheduler достигает[scheduler]num_runs
loop di pianificazione, viene riavviato. Scheduler è un componente senza stato e questo riavvio è un meccanismo di riparazione automatica per eventuali problemi che Scheduler potrebbe riscontrare. Se non specificato, viene applicato il valore predefinito di[scheduler]num_runs
, ovvero 5000.[scheduler]min_file_process_interval
può essere utilizzato per configurare la frequenza con cui avviene l'analisi del DAG, ma questo parametro non può essere più lungo del tempo necessario per eseguire loop[scheduler]num_runs
da parte di uno scheduler quando pianifichi i DAG.
Scalabilità della configurazione di Airflow
Airflow fornisce opzioni di configurazione che controllano il numero di attività e DAG che Airflow può eseguire contemporaneamente. Per impostare queste opzioni di configurazione, sostitui i relativi valori per il tuo ambiente.
-
Il parametro
[celery]worker_concurrency
controlla il numero massimo di attività che un worker Airflow può eseguire contemporaneamente. Se moltiplichi il valore di questo parametro per il numero di worker Airflow nel tuo ambiente Cloud Composer, ottieni il numero massimo di attività che possono essere eseguite in un determinato momento nel tuo ambiente. Questo numero è limitato dall'opzione di configurazione[core]parallelism
di Airflow, che è descritta di seguito.Negli ambienti Cloud Composer 2, il valore predefinito di
[celery]worker_concurrency
viene calcolato automaticamentePer le versioni di Airflow 2.3.3 e successive,
[celery]worker_concurrency
è impostato su un valore minimo tra 32, 12 * worker_CPU e 8 * worker_memory.Per le versioni di Airflow 2.2.5 o precedenti,
[celery]worker_concurrency
è impostato su 12 * numero di CPU dei worker.
-
L'opzione di configurazione
[core]max_active_runs_per_dag
di Airflow controlla il numero massimo di esecuzioni DAG attive per DAG. Se raggiunge questo limite, il programmatore non crea altre esecuzioni del DAG.Se questo parametro non è impostato correttamente, potresti riscontrare un problema in cui il programmatore riduce la velocità di esecuzione del DAG perché non può creare più istanze di esecuzione del DAG in un determinato momento.
Attività attive massime per DAG
L'opzione di configurazione Airflow
[core]max_active_tasks_per_dag
controlla il numero massimo di istanze di attività che possono essere eseguite contemporaneamente in ogni DAG. Si tratta di un parametro a livello di DAG.Se questo parametro non è impostato correttamente, potresti riscontrare un problema con l'esecuzione di una singola istanza DAG lenta perché esiste solo un numero limitato di attività DAG che possono essere eseguite in un determinato momento.
Soluzione: aumenta
[core]max_active_tasks_per_dag
.Parallelismo e dimensioni del pool
L'opzione di configurazione
[core]parallelism
di Airflow controlla il numero di attività che lo scheduler di Airflow può mettere in coda nella coda dell'executor dopo che tutte le dipendenze per queste attività sono soddisfatte.Si tratta di un parametro globale per l'intera configurazione di Airflow.
Le attività vengono messe in coda ed eseguite all'interno di un pool. Gli ambienti Cloud Composer utilizzano un solo pool. La dimensione di questo pool controlla quante attività possono essere messe in coda dallo scheduler per l'esecuzione in un determinato momento. Se la dimensione del pool è troppo piccola, lo scheduler non può mettere in coda le attività per l'esecuzione anche se le soglie, definite dall'opzione di configurazione
[core]parallelism
e dall'opzione di configurazione[celery]worker_concurrency
moltiplicate per il numero di worker Airflow, non sono ancora soddisfatte.Puoi configurare la dimensione del pool nell'interfaccia utente di Airflow (Menu > Amministrazione > Pool). Modifica le dimensioni del pool in base al livello di parallelismo previsto nel tuo ambiente.
In genere,
[core]parallelism
è impostato come prodotto del numero massimo di worker e [celery]worker_concurrency.
I DAG non vengono pianificati dallo scheduler a causa di timeout del processore DAG
Per ulteriori informazioni su questo problema, vedi Risolvere i problemi relativi ai DAG.
Contrassegnare le attività come non riuscite dopo aver raggiunto dagrun_timeout
Lo scheduler contrassegna le attività non completate (in esecuzione, pianificate e in coda) come non riuscite se un'esecuzione del DAG non viene completata entro dagrun_timeout
(un parametro DAG).
Soluzione:
Estendi
dagrun_timeout
per rispettare il timeout.(Cloud Composer 2) Aumenta il numero di worker o aumenta i parametri di prestazioni dei worker, in modo che il DAG venga eseguito più velocemente.
Sintomi di un carico elevato del database Airflow
A volte nei log dell'organizzatore di Airflow potresti vedere la seguente voce di log di avviso:
Scheduler heartbeat got an exception: (_mysql_exceptions.OperationalError) (2006, "Lost connection to MySQL server at 'reading initial communication packet', system error: 0")"
Sintomi simili potrebbero essere osservati anche nei log dei worker di Airflow:
Per MySQL:
(_mysql_exceptions.OperationalError) (2006, "Lost connection to MySQL server at
'reading initial communication packet', system error: 0")"
Per PostgreSQL:
psycopg2.OperationalError: connection to server at ... failed
Questi errori o avvisi potrebbero essere un sintomo del fatto che il database Airflow è sopraffatto dal numero di connessioni aperte o dal numero di query eseguite contemporaneamente dagli scheduler o da altri componenti di Airflow come worker, attivatori e server web.
Possibili soluzioni:
Esegui l'upgrade del database Airflow:
- (Cloud Composer 1) Modifica il tipo di macchina dell'istanza Cloud SQL che memorizza il database Airflow del tuo ambiente.
- (Cloud Composer 2) Modifica le dimensioni dell'ambiente.
Riduci il numero di pianificatori. Nella maggior parte dei casi, uno o due pianificatori sono sufficienti per analizzare e pianificare le attività di Airflow. Non è consigliabile configurare più di due pianificatori, a meno che non esista un caso giustificato.
Evita di utilizzare variabili globali nei DAG di Airflow: variabili di ambiente Cloud Composer e variabili Airflow.
Imposta [scheduler]scheduler-heartbeat-sec su un valore superiore, ad esempio 15 secondi o più.
Imposta [scheduler]job-heartbeat-sec su un valore superiore, ad esempio 30 secondi o più.
Imposta [scheduler]scheduler_health_check_threshold su un valore pari a
[scheduler]job-heartbeat-sec
moltiplicato per4
.
Il server web mostra l'avviso "The scheduler does not appear to be running" (Il programmatore non sembra essere in esecuzione)
Lo scheduler segnala regolarmente il proprio heartbeat al database Airflow. In base a queste informazioni, il server web di Airflow determina se il pianificatore è attivo.
A volte, se lo scheduler è sotto carico elevato, potrebbe non essere in grado di registrare il proprio heartbeat ogni [scheduler]scheduler-heartbeat-sec.
In questo caso, il server web Airflow potrebbe mostrare il seguente avviso:
The scheduler does not appear to be running. Last heartbeat was received <X>
seconds ago.
Possibili soluzioni:
Aumenta le risorse di CPU e memoria per lo scheduler.
Ottimizza i DAG in modo che l'analisi e la pianificazione siano più veloci e non consumino troppe risorse dello scheduler.
Evita di utilizzare variabili globali nei DAG di Airflow: variabili di ambiente Cloud Composer e variabili Airflow.
Aumenta il valore di [scheduler]scheduler-health-check-threshold in modo che il server web attenda più a lungo prima di segnalare l'indisponibilità del programmatore.
Soluzioni alternative per i problemi riscontrati durante il backfill dei DAG
A volte potresti voler eseguire nuovamente i DAG già eseguiti. Puoi farlo con lo strumento a riga di comando Airflow nel seguente modo:
Airflow 1
gcloud composer environments run \
ENVIRONMENT_NAME \
--location LOCATION \
backfill -- -B \
-s START_DATE \
-e END_DATE \
DAG_NAME
Per eseguire di nuovo solo le attività non riuscite per un DAG specifico, utilizza anche l'argomento--rerun_failed_tasks
.
Airflow 2
gcloud composer environments run \
ENVIRONMENT_NAME \
--location LOCATION \
dags backfill -- -B \
-s START_DATE \
-e END_DATE \
DAG_NAME
Per eseguire di nuovo solo le attività non riuscite per un DAG specifico, utilizza anche l'argomento--rerun-failed-tasks
.
Sostituisci:
ENVIRONMENT_NAME
con il nome dell'ambiente.LOCATION
con la regione in cui si trova l'ambiente.START_DATE
con un valore per il parametro DAGstart_date
, nel formatoYYYY-MM-DD
.END_DATE
con un valore per il parametro DAGend_date
, nel formatoYYYY-MM-DD
.DAG_NAME
con il nome del DAG.
A volte l'operazione di backfill potrebbe generare una situazione di deadlock in cui il backfill non è possibile perché è presente un blocco su un'attività. Ad esempio:
2022-11-08 21:24:18.198 CET DAG ID Task ID Run ID Try number
2022-11-08 21:24:18.201 CET -------- --------- -------- ------------
2022-11-08 21:24:18.202 CET 2022-11-08 21:24:18.203 CET These tasks are deadlocked:
2022-11-08 21:24:18.203 CET DAG ID Task ID Run ID Try number
2022-11-08 21:24:18.204 CET ----------------------- ----------- ----------------------------------- ------------
2022-11-08 21:24:18.204 CET <DAG name> <Task name> backfill__2022-10-27T00:00:00+00:00 1
2022-11-08 21:24:19.249 CET Command exited with return code 1
...
2022-11-08 21:24:19.348 CET Failed to execute job 627927 for task backfill
In alcuni casi, puoi utilizzare le seguenti soluzioni alternative per superare i deadlock:
Disattiva il mini-programmatore sostituendo il valore
[core]schedule-after-task-execution
conFalse
.Esegui i backfill per intervalli di date più brevi. Ad esempio, imposta
START_DATE
eEND_DATE
per specificare un periodo di un solo giorno.