Scheduler
Clase 7 de 29 • Curso de Fundamentos de Apache Airflow
Contenido del curso
Clase 7 de 29 • Curso de Fundamentos de Apache Airflow
Contenido del curso
Mauro Ezequiel Bravo
Royer Guerrero Pinilla
Sergio Waldemar Garzón Mariño
Mario Alexander Vargas Celis
Camilo Corredor
Santiago Ahumada Lozano
DAG => Flujo de datos TASK => Componentes dentro del DAG que se puede anidar con otros TASKs. Operator => Objeto con el que se crea la TASK. Scheduler => Encargado de ejecutar los DAGs. Cuando ejecuta, en que intevalo de tiempo, etc.
✨ Existen 2 maneras de definir esto
# ┌─────── minute (0 - 59) # │ ┌────── hour (0 - 23) # │ │ ┌───── day of the month (1 - 31) # │ │ │ ┌───── month (1 - 12) # │ │ │ │ ┌──── day of the week (0 - 6) (Sunday to Saturday; # │ │ │ │ │ 7 is also Sunday on some systems) # * * * * *
@once Una y solo una vez
@hourly Cada hora al comienzo de la hora
@dialy Diariamente a medianoche
@weekly Una vez a la semana el domingo
@monthly Cada primer dia del mes a medianoche
@yearly Cada 1 de Enero a medianoche⚠️ Hay que tener cuidado porque el la vista de grid se organiza por fecha de programación schedule date y no por la fecha de ejecución execution_date lo que puede confundir y se puede llegar a pensar que no corrió
Vengo de trabajar mucho con Control-M, es muy parecido en cuando al core de la aplicación. Airflow cuenta con la ventaja de programar en Python, en cambio, para programar los jobs en Control-M usamos XML o la interfaz gráfica.
El Scheduler en Apache Airflow es el componente central encargado de gestionar la ejecución de los DAGs (Directed Acyclic Graphs) y las tareas definidas en ellos. Es responsable de planificar, desencadenar y supervisar las tareas según las dependencias y los intervalos de tiempo especificados.
Funciones principales del Scheduler
queued, running, success, failed, etc.schedule_interval del DAG.Flujo de trabajo del Scheduler
dags_folder).start_date: Fecha desde la cual debe comenzar a ejecutarse el DAG.schedule_interval: Frecuencia de ejecución del DAG.catchup: Si debe ejecutarse para intervalos pasados o solo para el más reciente.Configuración del Scheduler
El Scheduler puede configurarse desde el archivo airflow.cfg bajo la sección [scheduler]. Algunas opciones clave incluyen:
scheduler_heartbeat_sec:
min_file_process_interval:
num_runs:
max_threads:
dag_dir_list_interval:
Inicio del Scheduler
El Scheduler se ejecuta como un servicio continuo que procesa los DAGs y las tareas. Para iniciar el Scheduler, puedes usar el siguiente comando en la línea de comandos:
airflow scheduler
Este comando:
Ejemplo práctico
Supongamos que tienes un DAG que ejecuta una tarea diaria para procesar datos. El Scheduler:
schedule_interval.Código de ejemplo:
from airflow import DAG from airflow.operators.bash import BashOperator from datetime import datetime
dag = DAG( dag_id='daily_processing', schedule_interval='@daily', start_date=datetime(2023, 1, 1), catchup=False, )
task = BashOperator( task_id='process_data', bash_command='echo "Procesando datos..."', dag=dag, )
En este caso:
process_data debe ejecutarse.Interacción con otros componentes
Buenas prácticas para el Scheduler
Con estas consideraciones, el Scheduler puede manejar flujos de trabajo complejos y escalar según las necesidades del proyecto.
¿El operador viene siendo un worker dentro del work flow?
Hola Camilo
Lo que entiendo es que no. El worker es el componente que ejecuta las tareas. Mientras que el operador lo que hace es definir qué tipo de tareas existen.
Si ves la arquitectura que el profe muestra podras notar que los workers estan directamente conectados desde el servidor web. Sin embargo es el executor quien corre las tareas. En otras palabras, el scheduler le dice al executor qué tareas se deben ejecutar y cuando y este simplemente se encarga de usar los workers para que las tareas que se ponen a correr se ejecuten.
te recomiendo estas lecturas ya que me han ayudado a entender los componentes
Espero te sea de ayuda! Saludos:)