Este documento presenta Airflow, una plataforma que permite programar, ejecutar y monitorear flujos de trabajo o DAGs (Directed Acyclic Graphs). Explica conceptos clave como los DAGs, que son colecciones de tareas con dependencias especificadas en Python. También describe los componentes principales de Airflow como el scheduler, web server y base de datos, así como cómo se especifican, importan y ejecutan los DAGs. Finalmente, menciona diferentes tipos de operadores como los operadores por defecto y los personalizados.
2. Fernando Gandia
Conceptos generales
La plataforma
Sus componentes principales
Interfaces de comunicación
DAG’s
¿Como se especifican?
¿Como se importan en la plataforma?
¿Como se ejecutan y se prueban?
Operadores
Por defecto
Propios
Interfaz de usuario
Ejemplos
3. Fernando Gandia
¿Qué es Airflow?
Seleccionar datos Predecir Decidir
00:00 02:0022:00
Predecir Decidir
23:30 01:0022:00
Seleccionar datos
Predecir Decidir
23:30 01:0022:00
Seleccionar datos
CRON
• Especifica el inicio de cada tarea
• Cada tarea se dispara al llegar un
instante. No por dependencia
con otra tarea
• Manejo de errores es complejo
Describir
¿Por qué surge Airflow?
Plataforma que permite , Temporizar y Monitorizar flujos de trabajo.
4. Fernando Gandia
¿La esencia de Airflow?
DAG (Directed Acyclic Graphs):
Colección de tareas, organizadas de tal manera, que queden
reflejadas sus relaciones y dependencias.
Grafo acíclico dirigido:
Las aristas tienen un sentido definido.
No tiene ciclos.
Se especifican en ficheros Python
5. Fernando Gandia
Conceptos generales
La plataforma
Sus componentes principales
Interfaces de comunicación
DAG’s
¿Como se especifican?
¿Como se importan en la plataforma?
¿Como se ejecutan y se prueban?
Operadores
Por defecto
Propios
Interfaz de usuario
Ejemplos
8. Fernando Gandia
Conceptos generales
La plataforma
Sus componentes principales
Interfaces de comunicación
DAG’s
¿Como se especifican?
¿Como se importan en la plataforma?
¿Como se ejecutan y se prueban?
Operadores
Por defecto
Propios
Interfaz de usuario
Ejemplos
9. Fernando Gandia
Importar módulos.
Diccionario de argumentos
Instanciar el DAG
Crear cada tarea, asignándole un tipo de operador y sus
correspondientes parámetros.
Especificar relaciones y
dependencias.
1
2
3
4
5
10. Fernando Gandia
Copiar fichero .py en la carpeta dags
Dag Folder
Comando airflow list_dags
Si el Scheduler está en marcha el Dag se compila y se
importa automáticamente en la UI
Scheduler
1
2
3
11. Fernando Gandia
Por defecto, al
importar un DAG,
inicialmente la
temporización del
mismo está
encendida.
A menos que, en
las opciones de
configuración
hayamos
desactivado dicha
característica.
14. Fernando Gandia
Conceptos generales
La plataforma
Sus componentes principales
Interfaces de comunicación
DAG’s
¿Como se especifican?
¿Como se importan en la plataforma?
¿Como se ejecutan y se prueban?
Operadores
Por defecto
Propios
Interfaz de usuario
Ejemplos
15. Fernando Gandia
Llevan a cabo una
acción o le
indican a otro
sistema que la
realice.
3 tipos de operadores
Transfieren
datos de un
sistema a otro
Sensores que se
mantienen en
ejecución hasta que
se lleva a cabo
cierta condición
Tipo 1 Tipo 2 Tipo 3
17. Fernando Gandia
¿Qué necesidad debía cubrir?
Trata con datos de Hive o Impala a través de scripts de Python / PySpark desde un entorno de Airflow remoto.
SSHExecuteOperator
Opción
1
Entorno Airflow
Dag
Infraestructura de datos y
procesamiento distribuido
Puerto 22
Python / PySpark
Hive
Bash
Impala
Librerías , Scripts
HDFS
Ssh
Si se interrumpe la tarea se
mantiene la ejecución en la
insfraestructura
¿Qué opciones me aportaba Airflow?
18. Fernando Gandia
¿Qué necesidad debía cubrir?
Trata con datos de Hive o Impala a través de scripts de Python / PySpark desde un entorno de Airflow remoto.
¿Qué opciones me aportaba Airflow?
SSHExecuteOperator
BashOperator
Python
Librerías , Scripts
Impyla
Opción
2
Opción
1
Entorno Airflow
Dag
Infraestructura de datos y
procesamiento distribuido
Puerto 22
Python / PySpark
Hive
Bash
Impala
Librerías , Scripts
HDFS
Ssh
HiveServerPuerto 1000
Los datos se tratan en el entorno
Airflow y su ámbito está dentro del
script Python.
No hay procesamiento distribuido.
ODBC
19. Fernando Gandia
¿Qué necesidad debía cubrir?
Trata con datos de Hive o Impala a través de scripts de Python / PySpark desde un entorno de Airflow remoto.
¿Qué opciones me aportaba Airflow?
ODBC
SSHExecuteOperator
BashOperator
Python
Librerías , Scripts
Impyla
Opción
2
Opción
3
HiveOperator
Hive - Beeline
Hadoop
ODBC
Opción
1
Entorno Airflow
Dag
Infraestructura de datos y
procesamiento distribuido
Puerto 22
Python / PySpark
Hive
Bash
Impala
Librerías , Scripts
HDFS
Ssh
HiveServerPuerto 1000
Se necesita tener Hadoop y Hive
instalados en mismo entorno
Airflow
20. Fernando Gandia
• No instalar nada mas en el entorno Airflow
• Los datos y los scripts debían mantenerse en la infraestructura
• Sesión SSH interactiva
¿Requisitos para mi operador?
¿Cómo encripto los datos de conexión SSH?
• Airflow proporciona módulos de conexión llamados Hooks
1 Crear una conexión SSH con nuestro usuario propio
en la interfaz de Airflow
mi_conexion
2 Utilizar estos datos de conexión desde el código
from airflow.contrib.hook import SSHHook
mi_hook = SSHHook ( “mi_conexion” )
mi_hook.host
mi_hook.login
mi_hook.password
Librería pxssh
21. Fernando Gandia
¿Cómo hago de mi solución un operador de Airflow?
Creo un fichero
.py
Plugins
Folder
from airflow.plugins_manager import AirflowPlugin
class myOperador (BaseOperator)
def __init__ (argumentos_del_operador)
def execute
def on_kill
class myPlugin(AirflowPlugin)
name = “myPlugin”
operators = [myOperador]
flask_blueprint = []
hook = []
executors = []
…
super (myOperador, self).__init__(*args,**kwargs)
Copiar fichero .py en
la carpeta plugins
1
2
22. Fernando Gandia
Conceptos generales
La plataforma
Sus componentes principales
Interfaces de comunicación
DAG’s
¿Como se especifican?
¿Como se importan en la plataforma?
¿Como se ejecutan y se prueban?
Operadores
Por defecto
Propios
Interfaz de usuario
Ejemplos
27. Fernando Gandia
Conceptos generales
La plataforma
Sus componentes principales
Interfaces de comunicación
DAG’s
¿Como se especifican?
¿Como se importan en la plataforma?
¿Como se ejecutan y se prueban?
Operadores
Por defecto
Propios
Interfaz de usuario
Ejemplos