Potencia tu Automatización con Apache Airflow: La Herramienta que Está Revolucionando la Gestión de Datos

Palabras clave: Apache Airflow, DAG (Directed Acyclic Graph), Automatización, Flujos de trabajo, Orquestación de datos

¿Alguna vez te has preguntado cómo orquestar cientos de tareas de datos de manera eficiente y confiable? 

Imagina tener un sistema que no solo se encarga de ejecutar trabajos programados, sino que también se asegura de que cada tarea dependa de la anterior, se recupere de fallos y sea fácilmente escalable. Apache Airflow es la herramienta que hace posible todo esto y mucho más.

Este orquestador de flujos de trabajo se ha convertido en una pieza clave en la infraestructura de datos moderna. Desde grandes empresas hasta startups, Apache Airflow permite a los equipos gestionar pipelines complejos de forma eficiente y flexible, automatizando tareas que antes requerían una supervisión constante.

Apache Airflow permite la creación, la planificación y el seguimiento de flujos de trabajo a través de la programación informática. Es una solución totalmente de código abierto, muy útil para la arquitectura y la orquestación de circuitos complejos de datos y para el lanzamiento de tareas. 

Caso de uso: Pipeline de ETL con Apache Airflow

Supongamos que una empresa necesita extraer datos desde una base de datos SQL, transformarlos para su análisis y finalmente cargarlos en un almacén de datos. Este proceso, conocido como ETL, puede implicar múltiples pasos, cada uno dependiente del anterior, y cualquier error podría comprometer la integridad de los datos.

Con Apache Airflow, este flujo de trabajo se automatiza de manera robusta:

  1. Extracción de datos: Airflow ejecuta una tarea que conecta con una base de datos, extrae los datos y los guarda temporalmente.
  2. Transformación: Otra tarea procesa los datos, los limpia y los convierte al formato necesario.
  3. Carga: Finalmente, los datos transformados son cargados en el almacén de datos.

A través de su sistema de DAGs (Directed Acyclic Graphs), Airflow organiza estos pasos en un gráfico donde cada tarea depende de la anterior. Si alguna tarea falla, Airflow puede volver a intentarla o alertar a los responsables para que intervengan, asegurando que todo el proceso siga funcionando sin interrupciones y, al ser de código abierto, Airflow cuenta con una comunidad que brinda soporte y mejora continuamente.

¿Qué otros usos tiene Airflow?

  • Airflow se puede utilizar para cualquier circuito de datos por lotes, por lo que sus casos de uso son tantos como diversos. Debido a su extensibilidad, esta plataforma destaca particularmente para organizar tareas con dependencias complejas en múltiples sistemas externos.
  • Al escribir circuitos en código y utilizar los diversos plugins disponibles, se puede integrar Airflow en cualquier sistema dependiente desde una plataforma unificada para la gestión y la supervisión.
  • Como ejemplo, se puede utilizar Airflow para añadir las actualizaciones diarias de los equipos de ventas de Salesforce para enviar un informe diario a los ejecutivos de la empresa.
  • Además, la plataforma se puede utilizar para organizar y ejecutar tareas de Machine Learning que se ejecutan en clústeres Spark externos. También permite cargar datos de aplicaciones o sitios web en un Data Warehouse una vez por hora.
Características:
  • Python puro:

¡Se acabaron las líneas de comandos y la magia negra de XML! Utilice las funciones estándar de Python para crear sus flujos de trabajo, incluidos los formatos de fecha y hora para la programación y los bucles para generar tareas de forma dinámica. Esto le permite mantener una flexibilidad total al crear sus flujos de trabajo.

  • Interfaz de usuario útil:

Monitorea, programa y administra tus flujos de trabajo a través de una aplicación web moderna y robusta. No necesitas aprender a usar interfaces antiguas, como las de cron. Siempre tendrás una visión completa del estado y los registros de las tareas completadas y en curso.

  • Integraciones robustas:

Apache Airflow® ofrece numerosos operadores listos para ejecutar sus tareas en Google Cloud Platform, Amazon Web Services, Microsoft Azure y muchos otros servicios de terceros. Esto hace que Airflow sea fácil de aplicar a la infraestructura actual y de extender a tecnologías de última generación.

  • Fácil de usar:

Cualquier persona con conocimientos de Python puede implementar un flujo de trabajo. Apache Airflow® no limita el alcance de sus flujos de trabajo; puede usarlo para crear modelos de aprendizaje automático, transferir datos, administrar su infraestructura y más.

  • Código abierto https://docs.google.com/document/d/136K3w5O-LYdvUyk-6di6tDdArgUWebdL/edit

Donde quiera que quieras compartir tu mejora, puedes hacerlo abriendo una PR. Es así de simple, sin barreras ni procedimientos prolongados. Airflow tiene muchos usuarios activos que comparten voluntariamente sus experiencias.

¿Qué hace que Airflow sea único?

En la siguiente sección, abordaremos algunos de los componentes únicos de Airflow que te ayudarán a llevar tu estrategia de canalización de datos al siguiente nivel.

DAG

  • DAG significa Directed Acyclic Graph (Gráfico Acíclico Dirigido) y es el concepto central de Airflow. Los DAG son como un conjunto de nodos con relaciones y dependencias entre sí. Se pueden representar mediante el siguiente diagrama:
  • Diagrama 1: Gráfico acíclico dirigido también conocido como DAG
  • Una de las características más potentes de Airflow es que los DAG están escritos en Python. El hecho de que Airflow esté escrito en Python nos ayuda a abordar uno de los mayores desafíos que enfrentan los ingenieros de datos, que es la integración de diferentes sistemas.

Tasks

  • Las tareas son como eventos en su flujo de trabajo. Estos eventos pueden depender de otros o suceder en paralelo e incluso pueden pasar información entre ellos. En el Diagrama 2 a continuación, hemos reemplazado las letras del Diagrama 1 con eventos de la vida real que pueden ocurrir en su flujo de datos.

 

  • Diagrama 3: Ejemplo de reglas de activación en juego

Operators

  • Los operadores le permiten tener distintos tipos de tareas con distintas funcionalidades . Algunas de las más populares son:
  • BashOperator: ejecuta un comando bash
  • PythonOperator: llama a una función de Python definida por el usuario
  • EmailOperator: envía un correo electrónico
  • SimpleHttpOperator: llama a un punto final en un sistema HTTP (POST, GET, etc.)
  • Diagrama 4: Ejemplo de operadores

Sensors

  • Los sensores son un subconjunto de los operadores. Simplemente esperan a que se produzca una acción en particular, como la copia de un archivo o la finalización de una carga de trabajo en Kubernetes. El uso de un esfuerzo conjunto entre operadores y sensores incorporará las mejores prácticas en su flujo de datos a través de la validación y la prevención de pérdida de datos.

Administration

  • La interfaz de usuario de Airflow tiene un conjunto de opciones en la parte superior, una de las cuales es la opción central “Administrador”. En la opción Administrador, los administradores de Airflow pueden configurar los parámetros necesarios para que cierta información esté disponible en los DAG.

Connections

  • Las conexiones son objetos que se utilizan para almacenar credenciales y otra información necesaria para conectarse a servicios externos. Los administradores pueden configurar conexiones a bases de datos, puntos finales HTTP, servidores FTP y más.

Variables

  • Las variables son una forma genérica de almacenar y recuperar contenido o configuraciones arbitrarias como un simple almacén de valores clave dentro de Airflow. Airflow tiene seguridad incorporada cuando se usan variables. Se cifran automáticamente mediante Fernet y la plataforma otorga la opción de usar un backend de Secrets para mayor seguridad.
  • Si desea obtener más información sobre cada uno de estos componentes únicos, haga clic aquí para leer una guía detallada sobre todo lo relacionado con Apache Airflow .

Ventajas de usar Airflow para DAGs:

  • Código Abierto: Airflow es gratuito y su código está disponible para que cualquiera pueda revisarlo, modificarlo y contribuir. Esto no solo garantiza transparencia sino también una mejora constante gracias a la comunidad de desarrolladores.
  • Comunidad y Soporte: La comunidad de Airflow es muy activa. Esto significa que hay muchos recursos disponibles, como documentación, foros, y contribuciones en forma de plugins o mejoras al software base.
  • Flexibilidad: Puedes escribir tus DAGs en Python, lo que permite una integración fluida con numerosas herramientas y servicios, tanto en la nube como on-premise.
  • Monitoreo y Gestión: Airflow proporciona una interfaz web donde puedes monitorear, gestionar y depurar tus DAGs. Puedes ver el estado de tus tareas, logs, y hasta reprogramar ejecuciones.

Según datos de TheirStack, más de 25.000 empresas utilizan Apache Airflow en todo el mundo.Este número ha crecido significativamente desde su creación en 2015 por Airbnb, consolidándose como una herramienta esencial para la orquestación de flujos de trabajo en diversas industrias. Además, una encuesta de Apache Airflow de 2022 indica que el 64% de los usuarios trabajan en empresas con más de 200 empleados, lo que refleja su popularidad en organizaciones de mayor tamaño

Empresas que utilizan AirFlow:

  • Google : Airflow forma parte de su ecosistema, integrado en Google Cloud Composer para facilitar la orquestación de flujos de trabajo en la nube.
  • Airbnb : Fue la cuna de Apache Airflow y lo utiliza para gestionar sus complejos pipelines de datos.
  • Walmart : Utiliza Airflow para sus operaciones de procesamiento de datos y tareas de integración.
  • Robinhood : Lo emplea para la automatización y monitoreo de tareas relacionadas con sus flujos de datos.
  • Trustpilot : Lo integra para gestionar la ingesta de datos de reseñas y otros procesos automatizados.
  • Square : Implementa Airflow en sus sistemas de procesamiento y análisis de datos.

Gracias a su flexibilidad y capacidad de integración, Airflow sigue siendo una herramienta esencial en la gestión de datos para empresas tecnológicas y otros sectores.

Comparación con Herramientas Similares

Aunque Apache Airflow es muy popular, no es la única opción para la orquestación de tareas. Dos competidores importantes en este espacio son Prefect y Luigi. Aquí te mostramos las principales diferencias:

  • Airflow es muy robusto y flexible, ideal para equipos que necesitan gestionar flujos de trabajo complejos. Sin embargo, puede resultar un poco más complicado de configurar y gestionar debido a su arquitectura y la necesidad de una infraestructura adicional.
  • Prefect se enfoca en una experiencia de usuario más simplificada, con una arquitectura moderna basada en un enfoque de «cloud-first». Prefect permite a los usuarios construir pipelines de manera sencilla, sin la necesidad de gestionar tanto la infraestructura.
  • Luigi, por otro lado, es excelente para pipelines simples y tareas de procesamiento en lotes. Sin embargo, no tiene el nivel de flexibilidad de Airflow en cuanto a escalabilidad y monitoreo avanzado.

¿Cuál elegir? Dependerá de tus necesidades específicas. Si buscas flexibilidad y un ecosistema maduro, Airflow es la opción. Si prefieres una herramienta moderna con un enfoque simplificado, Prefect podría ser la respuesta.

Instalación y configuración de Apache Airflow:

Antes de instalar Apache Airflow, debe asegurarse de que Python y Pip estén instalados en su sistema. Si ya tiene Python y Pip instalados, puede omitir este paso.

Para instalar Python y Pip en Ubuntu, puedes usar los siguientes comandos:

$ sudo apt-get update
$ sudo apt-get
install python3
python3-pip

Para CentOS, puede utilizar los siguientes comandos:

$ sudo yum update 

$ sudo yum install epel-release

$ sudo yum install python3 python3-pip

Asegúrese de verificar la instalación ejecutando el siguiente comando:

$ python3 –version

$ pip –version

Si la versión de Python se muestra correctamente, puede continuar al siguiente paso.

Paso 2: Configurar el directorio de inicio de Airflow

Para configurar el directorio de inicio de Airflow, debe definir la ubicación donde Airflow almacenará sus archivos de configuración y datos. Esto se puede hacer configurando la variable de entorno AIRFLOW_HOME. En Windows, primero debe configurar un entorno virtual utilizando conda env o venv y configurar allí la variable de entorno AIRFLOW_HOME.

$ export AIRFLOW_HOME=~/airflow

Reemplace ~/airflow con la ubicación deseada para el directorio de inicio de Airflow. Este directorio se utilizará para almacenar registros, archivos de configuración y la base de datos SQLite de Airflow.

Paso 3: Instalar Apache Airflow

Con Python y Pip instalados, ahora puedes proceder a instalar Apache Airflow usando el siguiente comando:

$ pip3 install apache-airflow

Este comando descargará e instalará la última versión de Apache Airflow junto con sus dependencias. El proceso de instalación puede tardar unos minutos en completarse.

Nota: es posible que tengas el mismo problema que yo y necesites instalar algunas herramientas de compilación.

Paso 4: Inicializar el backend

Antes de iniciar Airflow, debe inicializar la base de datos del backend. Para ello, ejecute el siguiente comando:

$ airflow db init

Este comando creará las tablas y los esquemas necesarios en la base de datos SQLite de Airflow ubicada en el directorio AIRFLOW_HOME. Si planea utilizar un backend de base de datos diferente, como MySQL o PostgreSQL, deberá configurarlo como corresponde.

Paso 5: Iniciar el servidor web

Una vez inicializado el backend, puedes iniciar el servidor web Airflow ejecutando el siguiente comando:

$ airflow webserver -p 8080

Este comando iniciará el servidor web en el puerto 8080, lo que le permitirá acceder a la interfaz de usuario de Airflow a través de su navegador web. Puede reemplazar 8080 con el número de puerto deseado si es necesario. El servidor web es una pequeña API: sirve al front-end y le permite, al interactuar con el front-end, enviarle solicitudes como iniciar una ejecución de Airflow o cancelar una.

La primera vez que hice esto me salió este error:

ModuleNotFoundError: No module named ‘pwd’

Esto se debe a que pwd no está disponible en Windows. La respuesta:

“Puedes intentar usar WSL o ejecutarlo en un contenedor Docker.”

En el repositorio: https://github.com/apache/airflow . Tenemos un archivo docker-compose.yml. Si ingresas a él y ejecutas “docker compose up”, activarás los contenedores necesarios para iniciar el Airflow. Esto lleva un tiempo y también necesita 4 GB de memoria.

Paso 6: Ejecute el Programador de AirFlow

Para habilitar la programación y ejecución de tareas, debe iniciar el programador de Airflow. Para ello, ejecute el siguiente comando:

$ airflow scheduler

Esto no es necesario si simplemente ejecutaste `docker compose up` Ya estará ejecutándose.

El programador es responsable de activar y ejecutar tareas según los cronogramas definidos. Monitorea continuamente el estado de las tareas y garantiza que se ejecuten en los momentos adecuados.

Ahora puede acceder a la interfaz web de Airflow abriendo su navegador web y navegando a http://localhost:8080. Desde aquí, puede crear y administrar sus flujos de trabajo, monitorear su estado y realizar un seguimiento de sus registros de ejecución.

La primera vez que intentes ingresar, Airflow te pedirá un nombre de usuario y una contraseña. Para obtener uno de estos, deberás crear un usuario.

Correr:

docker exec -it {containername}/bin/bashexec -it {containername}/bin/bash

y luego:

airflow users  create –role Admin –username admin –email admin –firstname admin –lastname admin –password admin–role Admin –username admin –email admin –firstname admin –lastname admin –password admin

O si ingresó a través del archivo Docker, el nombre de usuario y la contraseña predeterminados son “Airflow”

Con estas credenciales de «administrador», ahora podrás iniciar sesión en el panel de control y ver la interfaz de usuario de Airflow.

Conclusión:

Apache Airflow ha demostrado ser una herramienta fundamental para equipos que gestionan grandes volúmenes de datos. No solo proporciona la capacidad de orquestar procesos complejos de manera eficiente, sino que también asegura la fiabilidad y escalabilidad de los pipelines a medida que las necesidades del negocio crecen.

Si estás buscando una solución para automatizar flujos de trabajo de datos, gestionar tareas programadas y mantener una infraestructura de datos robusta, Airflow es definitivamente una de las opciones más potentes del mercado.

La próxima vez que enfrentes un desafío relacionado con la orquestación de tareas, recuerda que herramientas como Apache Airflow no solo facilitan el trabajo, sino que lo hacen de una manera optimizada y con la capacidad de escalar según las necesidades de tu organización.

Referencias Bibliográficas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Abrir chat
Hola 👋
¿En qué podemos ayudarte?