¿Qué es Apache Airflow? Introducción — AprenderBigData.com
Aprende en esta entrada qué es Apache Airflow, una de las herramientas de automatización de flujos de trabajo más potentes que existen que puede ayudar a gestionar cargas Big Data. En el artículo explicaremos las características de Airflow y su evolución.
¿Qué es Apache Airflow?
Apache Airflow es una herramienta de tipo workflow manager, o en español: gestor de flujos de trabajo, usada como orquestador de servicios.
El proyecto fue creado en octubre de 2014 en Airbnb por Maxime Beauchemin y publicado con licencia open source en junio de 2015. En marzo de 2016 el proyecto se acoge a la incubadora de la Apache Software Foundation, y en enero de 2019 es graduado como top level project, donde se mantiene en la actualidad. La adopción de Airflow en entornos productivos ha crecido recientemente, integrándose en el stack de Google Cloud en 2018 como su orquestador de servicios.
Airflow se usa para automatizar trabajos programáticamente dividiéndolos en subtareas. Permite su planificación y monitorización desde una herramienta centralizada. Los casos de uso más comunes son la automatización de ingestas de datos, acciones de mantenimiento periódicas y tareas de administración. Para ello, permite planificar trabajos como un cron y también ejecutarlos bajo demanda.
Además, Airflow integra una interfaz de usuario sencilla, una herramienta CLI que proporciona control del estado de ejecución de todo el sistema. También se encuentra en desarrollo su propia API.
DAGs en Apache Airflow
En Airflow, se trabaja con DAGs (Directed Acyclic Graphs). Son colecciones de tareas o de trabajos a ejecutar conectados mediante relaciones y dependencias.
Los grafos deben cumplir dos condiciones: ser dirigidos y acíclicos:
- Dirigidos: Las relaciones entre los nodos tienen solo un sentido.
- Acíclicos: No pueden formar ciclos, es decir, la ejecución no puede volver a un nodo que ya ha ejecutado.
Cada una de las tareas del DAG representada como un nodo, se describe con un operador y generalmente es atómica. Existen operadores predefinidos, y es posible extender y crear nuevos operadores si fueran necesarios.
En este ejemplo, observamos que es posible definir ramas o branches en un grafo. En cada división del flujo solo ejecutan las tareas definidas en una de las ramas, dependiendo de una condición evaluada anteriormente. Al no ser posible definir una rama sin ninguna tarea, para representar ramas sin acciones se usan tareas vacías llamadas dummy tasks.
Por ejemplo, un workflow o pipeline sencillo podría contener las siguientes tareas:
- Descargar datos de una base de datos MySQL
- Enviar los datos a un clúster de Apache Kafka
- Realizar transformaciones sobre los datos con Apache Spark
- Generar un mensaje de terminación
La creación de DAGs se realiza a través de código Python, la interfaz gráfica permite monitorizar el estado de ejecución de las tareas pero no permite crear nuevos flujos.
Características
Cuando una tarea se ejecuta en Airflow, se denomina instancia, y tiene un tiempo asociado al momento de ejecución. Además, incorporan un atributo que describe su estado de ejecución: Running, Failed, Success, etc. La combinación de estas instancias de tareas generan un workflow o un flujo de trabajo.
Para establecer los tiempos máximos de ejecución para cada tarea, Airflow trabaja con SLAs (Service Level Agreements). Cuando el SLA no se cumple para alguna tarea, se puede informar al usuario o administrador del sistema.
Es posible gestionar el paso de mensajes y compartir el estado entre las tareas que ejecutan. Para ello se usa XCom (Cross-communication) y también se pueden definir variables en formato clave-valor.
Airflow también proporciona interfaces de comunicación llamadas para conectar con otras plataformas y bases de datos externas como pueden ser HDFS o Apache Hive. Los conectores facilitan la creación de nuevas tareas independientemente del origen y del destino de los datos.
Además, Airflow permite un control visual del estado de cada paso, facilitando la trazabilidad y la localización de errores conservando un histórico de fallos para detectar y prevenir problemas. Cuando una tarea falla, podemos configurar el sistema para que se reintente, o bien definir actuaciones en función del fallo que haya ocurrido.
Si quieres aprender más sobre Apache Airflow, su arquitectura y preguntas frecuentes haz click aquí.
Echa un ojo a mi lista de reproducción: Introducción al Big Data
Originally published at https://aprenderbigdata.com on March 23, 2020.