
Cosa sono Airflow Dags
Poiché le organizzazioni si affidano sempre di più ai dati, le Data Pipeline stanno diventando un elemento integrante delle loro operazioni quotidiane. La quantità di dati utilizzata in varie attività aziendali è cresciuta notevolmente nel tempo, da Megabyte al giorno a Gigabyte al minuto.
Airflow DAG è una raccolta di task organizzati in modo tale che le loro relazioni e dipendenze siano riflesse. Questo articolo “Cosa sono Airflow Dags” presenterà una guida completa degli Airflow DAG, della loro architettura, nonché delle best practice per la scrittura di Airflow DAG. Continua a leggere per saperne di più su Cosa sono Airflow Dags.
Che cos’è Apache Airflow?
Apache Airflow è una piattaforma di gestione del flusso di lavoro open source e distribuita sviluppata per l’orchestrazione dei dati. Il progetto Airflow è stato inizialmente avviato da Maxime Beauchemin presso Airbnb .
Dopo il successo del progetto, l’Apache Software Foundation ha rapidamente adottato il progetto Airflow, prima come progetto di incubazione nel 2016 e poi come progetto di primo livello nel 2019. Airflow ETL consente agli utenti di scrivere a livello di programmazione, pianificare e monitorare Data Pipeline. La caratteristica principale di Airflow è che consente agli utenti di creare facilmente Data Pipeline pianificate utilizzando un framework Python flessibile.
Introduzione ad Airflow DAG – Directed Acyclic Graph
Per avere un quadro chiaro di cosa siano realmente gli Airflow DAG, è necessario comprendere i seguenti aspetti.
- Definizione di Data Pipeline come grafici
- Definizione dei tipi di grafici diretti
- Definizione di DAG
Definizione di Data Pipeline come grafici – Cosa sono Airflow Dags
I crescenti volumi di dati richiedono una Data Pipeline per gestire Data Storage, Analysis, Visualization e altro. Una Data Pipeline è una raccolta di tutti i passaggi necessari che sono responsabili di un determinato processo. Apache Airflow è una piattaforma che consente agli utenti di sviluppare e monitorare Data Pipeline batch.
Una Data Pipeline di base, ad esempio, è composta da due task, ognuno dei quali esegue la propria funzione. Tuttavia, i nuovi dati non possono essere inseriti tra le pipeline finché non hanno subito le trasformazioni. Nella rappresentazione basata su grafici, i task sono rappresentati come nodi, mentre gli edge diretti rappresentano le dipendenze tra i task.
La direzione del bordo rappresenta la dipendenza. Ad esempio, un bordo che punta da Task 1 a Task 2 (immagine sopra) implica che Task 1 deve essere terminato prima che Task 2 possa iniziare. Questo grafico è chiamato grafo diretto.
Definizione dei tipi di grafici diretti – Cosa sono Airflow Dags
Esistono due tipi di grafi orientati: ciclici e aciclici.
In un Cyclic Graph, i cicli impediscono l’esecuzione del task a causa delle dipendenze circolari. A causa dell’interdipendenza dei Task 2 e 3, non esiste un percorso di esecuzione chiaro.
Nel grafico aciclico è presente un percorso chiaro per eseguire le tre diverse attività.
Definizione di DAG – Cosa sono Airflow Dags
In Apache Airflow, DAG sta per Directed Acyclic Graph. DAG è una raccolta di task organizzati in modo tale che le loro relazioni e dipendenze siano riflesse. Uno dei vantaggi di questo modello DAG è che fornisce una tecnica ragionevolmente semplice per l’esecuzione della pipeline. Un altro vantaggio è che divide chiaramente le pipeline in task incrementali discreti anziché affidarsi a un singolo script monolitico per eseguire tutto il lavoro.
La caratteristica aciclica è particolarmente significativa poiché è semplice e impedisce che i task vengano intrappolati in dipendenze circolari. Airflow impiega la caratteristica aciclica dei DAG per risolvere ed eseguire questi task graph in modo efficiente.
Architettura Apache Airflow – Cosa sono Airflow Dags
Apache Airflow consente agli utenti di impostare un intervallo pianificato per ciascun DAG, che determina quando Airflow esegue la pipeline.

Il flusso d’aria è organizzato in 3 componenti principali:
- Webserver: il Webserver visualizza i DAG Airflow analizzati dallo scheduler e fornisce l’interfaccia principale per consentire agli utenti di monitorare le esecuzioni dei DAG e i relativi risultati.
- Scheduler : Scheduler analizza i DAG Airflow, verifica i loro intervalli pianificati e inizia a pianificare le attività DAG per l’esecuzione passandole ai Worker Airflow
- Worker: seleziona le attività programmate per l’esecuzione e le esegue.
Altri componenti:
Database: un servizio separato che devi fornire ad Airflow per archiviare i metadati dal Webserver e dallo Scheduler.
Come creare un DAG in Airflow?
La creazione di un Directed Acyclic Graph (DAG) in Apache Airflow comporta la definizione di uno script Python che specifica le attività e le loro relazioni. Ecco una guida passo passo per creare un DAG con esempi di codice:
Passaggio 1: codice per creare un DAG Airflow
from airflow import DAG
from airflow.operators.python_operator import PythonOperator
from datetime import datetime, timedelta
# Define a default set of arguments for the DAG
default_args = {
'owner': 'airflow',
'depends_on_past': False,
'start_date': datetime(2023, 10, 23),
'email_on_failure': False,
'email_on_retry': False,
'retries': 1,
'retry_delay': timedelta(minutes=5),
}
# Define the DAG
dag = DAG(
'my_first_dag', # DAG ID (name of the DAG)
default_args=default_args,
description='A simple tutorial DAG',
schedule_interval=timedelta(days=1), # Frequency of the DAG (daily)
)
# Define the Python function to be used in a task
def print_hello():
return 'Hello, Airflow!'
# Define the task using PythonOperator
hello_task = PythonOperator(
task_id='hello_task', # Task ID
python_callable=print_hello, # The function to be executed
dag=dag, # Reference to the DAG
)
# Optionally, define more tasks and dependencies
Spiegazione
- Definizione DAG :L’oggetto DAG viene creato con gli argomenti necessari, ad esempio start_date, schedule_interval, e default_args.
- Funzione Python :La print_hellofunzione verrà eseguita come parte di un’attività.
- Compito :Un’attività viene definita utilizzando PythonOperator, che chiamerà la print_hellofunzione.
Passaggio 2: aggiungere altre attività
Puoi aggiungere più task usando operatori come PythonOperator, BashOperator, ecc. Definisci i task in modo simile. Esempio:
def print_goodbye():
return 'Goodbye, Airflow!'
goodbye_task = PythonOperator(
task_id='goodbye_task',
python_callable=print_goodbye,
dag=dag,
)
Passaggio 3: impostare le dipendenze delle attività
È possibile impostare le dipendenze delle attività utilizzando operatori come >> (per specificare l’ordine):
hello_task >> goodbye_task: Ciò goodbye_task dipende dal completamento con successo di hello_task.
Passaggio 4: salvare il DAG
Salvare il file nella cartella dags (ad esempio, my_first_dag.py).
Passaggio 5: eseguire Airflow Web Server
Avviare il server web Airflow e lo scheduler:
airflow webserver --port 8080
airflow scheduler
Accedi all’interfaccia utente di Airflow nel tuo browser all’indirizzo http://localhost:8080 e dovresti vedere elencato il tuo DAG.
Le migliori pratiche dei DAG Airflow
Per implementare i DAG Airflow nel tuo sistema, segui le procedure indicate di seguito.
- Scrittura di DAG puliti
- Progettazione di attività riproducibili
- Gestire i dati in modo efficiente
- Gestire le risorse
Scrittura di DAG puliti
È facile incasinarsi durante la creazione di DAG Airflow. Il codice DAG, ad esempio, può facilmente diventare inutilmente intricato o difficile da comprendere, soprattutto se i DAG sono prodotti da membri di un team che hanno stili di programmazione molto diversi.
- Usa convenzioni di stile: adottare uno stile di programmazione uniforme e pulito e applicarlo in modo coerente in tutti i tuoi DAG Airflow è uno dei primi passi verso la creazione di DAG puliti e coerenti. Quando scrivi il codice, il metodo più semplice per renderlo più chiaro e facile da comprendere è utilizzare uno stile comunemente utilizzato.
- Gestisci le credenziali in modo centralizzato: i DAG Airflow interagiscono con molti sistemi diversi, generando molti tipi diversi di credenziali, come database, archiviazione cloud e così via. Fortunatamente, il recupero dei dati di connessione dall’archivio connessioni Airflow semplifica la conservazione delle credenziali per il codice personalizzato.
- Attività correlate al gruppo tramite Task Group: a causa del gran numero di attività richieste, i complessi DAG Airflow possono essere difficili da comprendere. La nuova funzionalità di Airflow 2 denominata Task Groups aiuta a gestire questi sistemi complicati. I Task Group dividono in modo efficiente le attività in gruppi più piccoli, rendendo la struttura del DAG più gestibile e comprensibile.
Progettazione di attività riproducibili
Oltre a sviluppare un codice DAG eccellente, uno degli aspetti più difficili della scrittura di un DAG di successo è rendere riproducibili i task. Ciò significa che gli utenti possono semplicemente rieseguire un task e ottenere lo stesso risultato anche se il task viene eseguito in momenti diversi.
- Richiedi sempre che le attività siano idempotenti: l’idempotenza è una delle caratteristiche più importanti di una buona attività Airflow. Non importa quante volte esegui un’attività idempotente, il risultato è sempre lo stesso. L’idempotenza garantisce coerenza e resilienza di fronte al fallimento.
- I risultati delle attività devono essere deterministici: per creare attività e DAG riproducibili, devono essere deterministici. L’attività deterministica deve sempre restituire lo stesso output per qualsiasi input dato.
- Attività di progettazione mediante paradigmi funzionali: è più facile progettare attività mediante il paradigma di programmazione funzionale. La programmazione funzionale è un metodo di creazione di programmi per computer che trattano il calcolo principalmente come applicazione di funzioni matematiche, evitando al contempo l’uso di dati modificabili e stati mutabili.
Gestire i dati in modo efficiente
I DAG Airflow che gestiscono grandi volumi di dati devono essere progettati con cura per renderli il più efficienti possibile.
- Limitare i dati in elaborazione: limitare l’elaborazione dei dati al minimo necessario per ottenere il risultato previsto è l’approccio più efficace per la gestione dei dati. Ciò comporta un’attenta considerazione delle fonti dei dati e una valutazione se sono tutte necessarie o meno.
- Elaborazione incrementale: l’idea principale alla base dell’elaborazione incrementale è quella di dividere i dati in divisioni (basate sul tempo) e trattare ciascuna delle esecuzioni DAG separatamente. Gli utenti possono trarre vantaggio dall’elaborazione incrementale eseguendo processi di filtraggio/aggregazione nella fase incrementale del processo ed eseguendo analisi su larga scala sull’output ridotto.
- Evita di archiviare dati su un file system locale: la gestione dei dati all’interno di Airflow a volte potrebbe essere allettante per la scrittura dei dati sul sistema locale. Di conseguenza, le attività downstream potrebbero non essere in grado di accedervi poiché Airflow esegue le sue attività su più attività in parallelo. Il metodo più semplice per prevenire questo problema è utilizzare un archivio condiviso a cui tutti i lavoratori Airflow possono accedere per eseguire le attività contemporaneamente.
Gestire le risorse
Quando si gestiscono grandi volumi di dati, è possibile che l’Airflow Cluster venga sovraccaricato. Di conseguenza, una gestione appropriata delle risorse può aiutare a ridurre questo carico.
- Gestione della concorrenza tramite pool: quando si eseguono molti processi in parallelo, è possibile che numerose attività richiedano l’accesso alla stessa risorsa. Airflow utilizza pool di risorse per regolare quante attività hanno accesso a una determinata risorsa. Ogni pool ha un numero definito di slot che offrono accesso alla risorsa associata.
- Rilevamento di attività di lunga durata tramite SLA e avvisi: il meccanismo SLA (Service-level Agreement) di Airflow consente agli utenti di monitorare le prestazioni dei lavori. Utilizzando questo meccanismo, gli utenti possono designare in modo efficace timeout SLA per i DAG, con Airflow che li avvisa se anche uno solo dei task dei DAG impiega più tempo del timeout SLA specificato.
Conclusione
Questo articolo ha spiegato che i flussi di lavoro in Apache Airflow sono rappresentati come DAG, che definiscono chiaramente le attività e le loro dipendenze. Allo stesso modo, abbiamo inserito alcune delle best practice durante la scrittura di DAG Airflow.
Oggi, molte grandi organizzazioni si affidano ad Airflow per orchestrare numerosi processi di dati critici. È importante consolidare i dati da Airflow e altre fonti di dati in un Cloud Data Warehouse o in una destinazione di tua scelta per ulteriori analisi aziendali
(fonte)
Innovaformazione, scuola informatica specialistica segue costantemente il mercato IT e promuove la formazione continua dei team di sviluppatori.
Potete visionare l’offerta formativa completa sul nostro sito al seguente LINK.
info@innovaformazione.net – tel. 3471012275 (Dario Carrassi)
Vuoi essere ricontattato? Lasciaci il tuo numero telefonico e la tua email, ti richiameremo nelle 24h:
Articoli correlati

Chrome DevTools MCP

Come sviluppare Carta d’Imbarco Digitale

Cosa è AssemblyAI

Lavoro Impiegato Amministrativo Brescia

Fine-tuning vs Lora vs RAG
