¡Compártelo!

Apache Airflow: Orquestación y automatización de flujos de trabajo

En el ámbito de la gestión de datos y las operaciones en la nube, Apache Airflow se ha convertido en una herramienta de código abierto fundamental. En este post, descubriremos qué es Apache Airflow, una plataforma flexible y escalable diseñada para ayudarte a orquestar, programar y monitorear tus flujos de trabajo de manera efectiva.

Qué es Apache Airflow

Apache Airflow es una plataforma de gestión de flujos de trabajo de código abierto para ingeniería de datos y ciencia de datos. Está escrita en Python y fue creada por Airbnb en 2014 y ahora es un proyecto de la Apache Software Foundation. Airflow es utilizada por empresas de todos los tamaños para crear, programar y supervisar de forma programática los flujos de trabajo.

Airflow utiliza grafos acíclicos dirigidos (DAG) para representar flujos de trabajo. Los DAG están formados por tareas, que son los bloques de construcción de los flujos de trabajo. Airflow es un orquestador de tareas que permite ejecutarlas en el momento correcto, de la forma correcta y el orden correcto. Las tareas pueden ser cualquier cosa, desde ejecutar una consulta SQL hasta llamar a una API. Airflow programa las tareas para que se ejecuten a intervalos regulares o según eventos.

Principales características de Airflow

Airflow tiene una serie de características que lo convierten en una plataforma de gestión de flujos de trabajo poderosa. Estas características incluyen:

·        Modularidad: Los flujos de trabajo están formados por tareas, que se pueden reutilizar en otros flujos de trabajo. Esto hace que sea fácil crear flujos de trabajo complejos sin tener que empezar desde cero.

·        Escalabilidad: Airflow se puede escalar para manejar grandes cantidades de tareas y flujos de trabajo. Esto lo hace una buena opción para empresas con pipelines de datos complejos.

·        Flexibilidad: Esta plataforma es altamente flexible y se puede personalizar para satisfacer las necesidades de cualquier organización. Por ello, se considera una buena opción para empresas con una variedad de necesidades de datos.

Ventajas de Apache Airflow

1.     Dinámico: Al ser programado en Python todo lo que se puede hacer en Python se puede hacer en Airflow en los flujos de trabajo o pipelines de datos.

2.     Interfaz de Usuario: Tiene una buena interfaz de usuario que permite interactuar de forma dinámica con todas las tareas y procesos.

3.     Extensionabilidad: Puedes crear plugins propios para que Airflow interactúe con otras herramientas. La comunidad de Airflow ha creado herramientas para integraciones que realizan un gran número de actividades, por lo tanto Airflow cuenta con una interfaz de comandos así como de usuarios.

4.     Monitoreo: Permite llevar un monitoreo, logging y alertas, de tal forma que si sucede un fallo se conoce en qué punto ha fallado. El sistema de alertas permite el envío de mensajes a los creadores de DAGs para informar de fallos.

Desventajas

1.     No es intuitivo para nuevos usuarios, sin embargo, hay buen apoyo de la comunidad.

2.     Configuración del ambiente. A veces la configuración de ambientes suele ser complicada, sobre todo cuando se trabaja de forma local, si se necesitan crear diferentes conexiones, si se tienen varios ambientes como dev, prod u otros.

3.     No hay soporte nativo para Windows, también porque se ve todo en el conjunto con Docker, Kubernetes entre otros aspectos, y toda esta combinación suele afectar un poco a la parte de Windows.

Principales usos de Apache Airflow

  • Ingeniería de datos: Se puede utilizar para automatizar el proceso de ingeniería de datos, incluyendo la extracción, transformación y carga de datos.
  • Ciencia de datos: Sirve para automatizar el proceso de ciencia de datos, incluyendo la preparación de datos, la construcción de modelos y la evaluación de modelos.
  • Inteligencia de negocios: Es útil para automatizar el proceso de inteligencia de negocios, incluyendo la minería de datos, la presentación de informes y la creación de paneles.

Componentes principales

Servidor web: Hecho con un servidor Flash con Gunicorn.

Scheduler: Responsable de planificar las tareas. Monitorea todas las tareas para luego desencadenar instancias una vez las dependencias están completas.

Metastore: Base de datos donde se guardan los metadatos relacionados al admin y tareas.

Executor: Define cómo se ejecutan las tareas. Por ejemplo, si se utiliza Kubernetes, utilizarás el Kubernetes Executer.

Worker: Proceso que ejecuta las tareas determinadas por el ejecutor.

Operadores y tipos de Operadores

Los operadores determinan lo que realmente hace una tarea. Pueden compartir comunicación (XComs). Cada operador tiene una función muy particular.

BashOperator, DockerOperator, PythonOperator (posiblemente el más utilizado), S3Operator, EmailOperator, SlackAPIOperators, SimpleHttpOperator (permite enviar peticiones post y get ), MySqlOperator, SqliteOperator, Sensores (Si se tiene un DAG que no necesariamente se ejecuta diariamente, sino que se tiene que ejecutar en el momento que se produce un cambio).

Buenas prácticas de Apache Airflow

1. Usar los providers de Airflow para orquestar trabajos con otras herramientas. Airflow tiene varias integraciones con otras herramientas, como la nube de Google, AWS, Microsoft Azure, entre muchas más. Esto significa que se puede importar un provider y automáticamente se implementa y se puede usar, sin necesidad de programar de por medio.

2. No enviar todo el trabajo directamente a Airflow y usar framework específicos, como Spark. Esto significa que Airflow es una herramienta para orquestar, no es una herramienta para hacer extracciones, ni transformaciones, ni cargas. Simplemente orquesta el trabajo. Sin embargo, Spark es un framework flexible y escalable, altamente optimizado para hacer procesamiento paralelo de grandes conjuntos de datos. Airflow solamente orquesta esto de una forma elegante.

3.     Usar un framework de ELT siempre que sea posible.

4. Usar almacenamiento de datos intermediarios. Pues al no usarlos toda la información se guarda en la base de datos de Airflow, y al tener mucha información la base de datos de metadata de Airflow se vuelve demasiado pesada y puede generar un funcionamiento inapropiado de Airflow. Por ello se recomienda usar Google Cloud Storage u otro.

5. No traer conjuntos de datos muy grandes para las tareas y luego usar pandas para procesarlos. Sucede que, al operar con un conjunto de datos muy grande en un contenedor, computadora u otro medio que generalmente son recursos limitados. Por ello, al usar pandas para realizar una transformación básica, puede producirse un funcionamiento inadecuado por bajos recursos. Para esto es mejor usar herramientas como Spark, BigQuery u otras. Si hay una tarea que inicialmente requiere de pandas, mientras se espera a escalar, se recomienda implementar el código de una forma simple, e implementar esta tarea para que llame a una herramienta externa.

Conclusión

Apache Airflow es una útil herramienta de orquestación y automatización de flujos de trabajo. Su enfoque basado en DAGs, su planificador robusto y su amplia gama de operadores y conectores hacen que sea una opción ideal para gestionar tareas complejas de manera eficiente.

¿Quieres mantenerte informado/a sobre las últimas tecnologías? Síguenos en redes sociales y en nuestro canal de YouTube.

Artículos ​ relacionados

programación orientada a eventos

Programación Orientada a Eventos: Introducción y conceptos

La metodología de diseño centrada en eventos es una práctica muy común en el desarrollo de software que se fundamenta en la gestión y respuesta a eventos específicos. En este artículo, revisaremos qué es la Programación Orientada a Eventos, los fundamentos de este paradigma, desde

concurrencia en swift

Concurrencia en Swift: camino hacia la eficiencia

La gestión eficiente de la concurrencia es un aspecto crucial en el desarrollo de aplicaciones. En el ecosistema de iOS y macOS, Swift se ha convertido en el lenguaje preferido por muchos desarrolladores debido a su poder y versatilidad. Sin embargo, para aprovechar al máximo

Bruno para simplificar el trabajo con APIs

Cómo utilizar Bruno para simplificar el trabajo con APIs

En el desarrollo de software, la gestión eficaz de las API es imprescindible para garantizar el éxito de los proyectos. Desde la fase de pruebas y documentación hasta la colaboración en equipo, contar con las herramientas adecuadas puede marcar una gran diferencia. Es aquí donde