Apache Airflow es una plataforma de orquestación de flujos de trabajo (workflows) que permite crear, programar y monitorear flujos de trabajo complejos, usualmente en el contexto de ETL (Extract, Transform, Load), procesamiento de datos, pipelines de machine learning y tareas de automatización en general. Airflow maneja la ejecución de tareas de forma secuencial o paralela a través de DAGs (Directed Acyclic Graphs), que definen cómo se conectan y dependen las tareas entre sí.
Funciones principales de Airflow:
- Planificación y ejecución de tareas: Programas cuándo y cómo deben ejecutarse las tareas.
- Monitorización: Ofrece una interfaz web para visualizar el estado de las ejecuciones y logs.
- Escalabilidad: Airflow es capaz de manejar flujos de trabajo en entornos distribuidos.
- Gestión de dependencias: Controla cómo se relacionan y dependen las tareas entre ellas.
Componentes clave de Airflow:
- DAGs (Directed Acyclic Graphs): Representan los flujos de trabajo.
- Tareas (Tasks): Unidades individuales de trabajo dentro de un DAG.
- Scheduler: Programa las tareas para que se ejecuten en el momento adecuado.
- Workers: Ejecutan las tareas (puede ser local o distribuido).
- Executor: Define cómo se ejecutan las tareas (e.g.,
CeleryExecutor,LocalExecutor).
Ejemplo básico de un DAG:
from airflow import DAG
from airflow.operators.bash import BashOperator
from datetime import datetime
default_args = {
'owner': 'guty',
'start_date': datetime(2023, 1, 1),
'retries': 1
}
dag = DAG(
'ejemplo_dag',
default_args=default_args,
description='Un simple DAG de ejemplo',
schedule_interval='@daily',
)
tarea1 = BashOperator(
task_id='tarea_1',
bash_command='echo "Hola Mundo"',
dag=dag,
)
tarea2 = BashOperator(
task_id='tarea_2',
bash_command='echo "Otra tarea"',
dag=dag,
)
tarea1 >> tarea2 # Definir dependencias
Deference to website author, some good selective information.