Saltar al contenido

Lección 1 de 20 · Lectura y práctica

Instalación de Airflow con Docker para Desarrollo Local

Concepto claveLa instalación de Apache Airflow con Docker para desarrollo local es una estrategia que permite crear un entorno aislado y reproducible donde puedes diseñar, probar y depurar tus DAGs (Directed Acyclic Graphs) sin.

Del concepto a la práctica

Taller de esta lección

La instalación local debe tratarse como una comprobación de componentes, no como un comando aislado. Para que Airflow funcione, el contenedor del planificador, la interfaz y la base de metadatos deben compartir red, volúmenes y una configuración compatible. El objetivo es poder crear un DAG, verlo y ejecutar una tarea sin tocar sistemas externos.

Ejemplo resuelto

Supón un proyecto con dags/, logs/ y plugins/. Antes de iniciar, revisa que el archivo de composición monte ./dags en la ruta de DAGs del contenedor. Tras iniciar los servicios, la evidencia mínima es: contenedores activos, interfaz accesible localmente y un DAG visible después de guardar un archivo Python válido.

Pruébalo

  1. Crea las tres carpetas y un DAG mínimo sin conexiones externas.

  2. Inicia el entorno y observa los servicios activos.

  3. Comprueba que el DAG aparece y ejecuta una tarea que escriba un mensaje.

  4. Detén y vuelve a iniciar para verificar que el DAG y los logs permanecen.

Error frecuente: montar solo el archivo DAG y no el directorio de logs. Corrígelo usando volúmenes separados y permisos de lectura adecuados.

Ejercicio: reinicia el entorno y registra qué servicios vuelven a estar disponibles.

Comprueba tu resultado

el DAG sigue visible y el log conserva la ejecución anterior.

Grafo acíclico con extracción, validación, transformación, carga y publicación, incluyendo dos dependencias de entrada.
CursaloMapa de práctica
Dependencias antes que horarios

Un DAG expresa dependencias entre tareas, sin ciclos. Una transformación puede esperar a varias entradas y la publicación debe esperar a que la carga esté lista. El orden depende de los datos necesarios, no solo de una hora del reloj.

Ver la infografía en tamaño completo ↗

Concepto clave

La instalación de Apache Airflow con Docker para desarrollo local es una estrategia que permite crear un entorno aislado y reproducible donde puedes diseñar, probar y depurar tus DAGs (Directed Acyclic Graphs) sin afectar sistemas de producción. Imagina que Docker es como una caja de herramientas portátil: dentro tienes todo lo necesario (Airflow, sus dependencias, bases de datos) empaquetado en contenedores, listo para usar en cualquier máquina. Esto elimina problemas de compatibilidad entre sistemas operativos y versiones de software, similar a cómo un chef lleva sus utensilios a una cocina ajena para garantizar resultados consistentes.

Para un Data Engineer intermedio, esta aproximación es crucial porque acelera el ciclo de desarrollo. En lugar de perder horas configurando manualmente Airflow y sus componentes (como el metadatabase o el executor), Docker te ofrece una solución preconfigurada. Los contenedores actúan como máquinas virtuales ligeras: cada uno ejecuta un servicio específico (por ejemplo, Airflow webserver, scheduler, base de datos PostgreSQL) y se comunican entre sí a través de una red virtual. Esto simula un entorno de producción en miniatura, permitiéndote validar pipelines ETL complejos antes de desplegarlos.

Cómo funciona en la práctica

El proceso sigue estos pasos:

  1. Preparación del entorno: Instala Docker y Docker Compose en tu máquina local. Estos son los únicos requisitos previos, ya que todo lo demás se gestiona dentro de contenedores.
  2. Descarga de la configuración oficial: Airflow proporciona un archivo docker-compose.yaml oficial que define todos los servicios necesarios. Este archivo es como un plano de construcción que especifica qué contenedores crear, cómo configurarlos y cómo conectarlos.
  3. Personalización: Ajusta el archivo docker-compose.yaml según tus necesidades. Por ejemplo, puedes cambiar la versión de Airflow, agregar variables de entorno para conexiones a bases de datos externas, o montar volúmenes para persistir datos.
  4. Inicialización: Ejecuta comandos Docker Compose para iniciar los servicios. Esto descarga las imágenes de Docker (si no las tienes) y levanta los contenedores. Una vez completado, accedes a la interfaz web de Airflow en http://localhost:8080.

Un ejemplo básico de configuración en el archivo docker-compose.yaml incluye servicios como:

ServicioFunción
postgresBase de datos para metadatos de Airflow
redisBroker de mensajes para el executor Celery
airflow-webserverInterfaz web para gestionar DAGs
airflow-schedulerOrquesta la ejecución de tareas
airflow-workerEjecuta tareas en paralelo (si usas Celery)

Caso de estudio

Supongamos que eres un Data Engineer en una empresa de e-commerce que necesita orquestar un pipeline ETL diario. El pipeline extrae datos de ventas de una API, los transforma para calcular métricas como ingresos por región, y los carga en un data warehouse. Con Airflow en Docker, puedes simular este flujo localmente:

  1. Configuración inicial: Descargas el archivo docker-compose.yaml oficial de Airflow y lo modificas para usar la versión 2.7.0 (estable). Agregas un volumen para mapear una carpeta local donde guardarás tus DAGs, asegurando que los cambios en código se reflejen automáticamente en Airflow.
  2. Desarrollo del DAG: Creas un DAG en Python que define tareas para extraer datos (usando un operador Python), transformarlos (con Pandas en un operador personalizado) y cargarlos (con un operador para PostgreSQL). Lo guardas en la carpeta mapeada, y Airflow lo detecta al instante.
  3. Pruebas: En la interfaz web, activas el DAG y monitoreas su ejecución. Usas los logs de los contenedores para depurar errores, como problemas de conexión a la API. Esto te permite iterar rápidamente sin riesgos para producción.
Dato importante: Según la documentación de Airflow, la configuración con Docker reduce el tiempo de setup de horas a minutos, ideal para entornos de desarrollo ágiles.

Errores comunes

  • Permisos incorrectos en volúmenes: Al mapear carpetas locales a contenedores, los permisos de archivos pueden causar que Airflow no lea los DAGs. Solución: Asegúrate de que los archivos tengan permisos de lectura para el usuario dentro del contenedor (por defecto, usuario airflow con UID 50000).
  • Conflicto de puertos: Si otro servicio usa el puerto 8080 en tu máquina, el webserver de Airflow fallará al iniciar. Solución: Cambia el mapeo de puertos en docker-compose.yaml, por ejemplo, de 8080:8080 a 8081:8080 para acceder en http://localhost:8081.
  • Falta de recursos del sistema: Docker puede consumir mucha RAM y CPU, especialmente con múltiples contenedores. Solución: Ajusta los límites en la configuración de Docker Desktop o usa comandos como docker-compose up --scale airflow-worker=2 para controlar el número de workers.
  • Olvidar inicializar la base de datos: Antes de usar Airflow por primera vez, debes ejecutar docker-compose up airflow-init para configurar la base de datos. Si lo omites, los servicios no funcionarán correctamente.
  • No gestionar variables y conexiones: En desarrollo, es común hardcodear credenciales en DAGs, lo que es inseguro. Solución: Usa la interfaz web o comandos de Airflow para definir variables y conexiones de forma segura desde el inicio.

Checklist de dominio

  1. Verifica que Docker y Docker Compose estén instalados y funcionando en tu sistema operativo.
  2. Descarga y personaliza el archivo docker-compose.yaml oficial de Airflow para tu versión deseada.
  3. Ejecuta el comando de inicialización para configurar la base de datos de metadatos.
  4. Inicia todos los servicios con Docker Compose y accede a la interfaz web en el puerto configurado.
  5. Crea un DAG simple, guárdalo en la carpeta mapeada, y confirma que Airflow lo detecte automáticamente.
  6. Configura al menos una conexión (por ejemplo, a PostgreSQL) y una variable en Airflow para usarlas en un DAG.
  7. Monitorea los logs de los contenedores para depurar un error simulado en una tarea.

Configura un entorno local de Airflow con Docker y despliega tu primer DAG ETL

Sigue estos pasos para instalar Airflow con Docker y probar un pipeline básico:

  1. Prepara tu máquina: Si no tienes Docker instalado, descárgalo desde docker.com. Asegúrate de que Docker Compose esté incluido (viene con Docker Desktop en Windows/Mac, o instálalo por separado en Linux).
  2. Obtén la configuración de Airflow: Descarga el archivo docker-compose.yaml oficial desde la documentación de Airflow (versión 2.7.0). Guárdalo en una carpeta nueva, por ejemplo, ~/airflow-docker.
  3. Personaliza la configuración: Abre el archivo docker-compose.yaml y realiza estos cambios:
    • Cambia la versión de la imagen de Airflow a apache/airflow:2.7.0.
    • Agrega un volumen para mapear una carpeta local (por ejemplo, ./dags) al directorio de DAGs en el contenedor (/opt/airflow/dags).
    • Modifica el puerto del webserver si el 8080 está en uso (por ejemplo, usa 8081:8080).
  4. Inicializa Airflow: En la terminal, navega a la carpeta con el archivo docker-compose.yaml y ejecuta:
    docker-compose up airflow-init
    Espera a que complete, lo que configurará la base de datos.
  5. Inicia los servicios: Ejecuta:
    docker-compose up -d
    Esto levantará todos los contenedores en segundo plano. Verifica que estén corriendo con docker-compose ps.
  6. Accede y prueba: Abre tu navegador en http://localhost:8080 (o el puerto que configuraste). Usa las credenciales por defecto (usuario: airflow, contraseña: airflow). Crea un DAG simple en la carpeta mapeada (por ejemplo, un DAG que imprima "Hola Mundo" cada minuto) y confirma que aparezca en la interfaz.
  7. Ejecuta un pipeline ETL simulado: Desarrolla un DAG con tres tareas:
    • Extraer: Usa un operador Python para generar datos ficticios de ventas (por ejemplo, una lista de diccionarios con producto, cantidad y precio).
    • Transformar: En otra tarea, calcula el ingreso total (cantidad * precio) y filtra productos con ingreso mayor a 100.
    • Cargar: Usa un operador para guardar los resultados en un archivo CSV local.
    Activa el DAG y verifica que se ejecute sin errores.
Pistas
  • Si el webserver no carga, revisa los logs con 'docker-compose logs airflow-webserver' para ver errores específicos.
  • Para acceder a la terminal de un contenedor y depurar, usa 'docker exec -it [nombre-contenedor] bash'.
  • Asegúrate de que tu DAG tenga un 'dag_id' único y esté en la carpeta correcta mapeada; Airflow escanea cada 30 segundos.

Evalua tu comprension

Completa el quiz interactivo de arriba para ganar XP.

Práctica acompañada: Aprender haciendo un proyecto

Una entrega pequeña, evidencia y retroalimentación. Usa este cuaderno como práctica complementaria de la ruta; el material original de la lección continúa siendo tu referencia.

Una entrega pequeña, evidencia y retroalimentación: Pregunta, Muestra, Entrega, Revisión
De la idea al resultado: una secuencia para practicar y revisar.

Práctica: una hora con tres etapas

Dedica diez minutos a definir la entrega y los criterios, treinta y cinco a construirla y quince a probarla. El tiempo es una guía del ejercicio, no una promesa de que cualquier tarea se resuelva en una hora. Si aparece una dependencia grande, redúcela o conviértela en un pendiente explícito.

Usa la hoja de proyecto para registrar entrada, resultado esperado y evidencia. Pide a alguien que intente usar la entrega sin tus instrucciones verbales. Observa qué pregunta primero. Una buena corrección puede ser una etiqueta, un ejemplo o una condición que antes no habías explicado.

Comprueba tu entrega

Entrega la primera versión, la versión revisada y una nota breve: qué funcionó, qué falló y qué probarías después. Conserva los archivos necesarios para repetir el ejercicio. Una captura demuestra apariencia; una consulta ejecutada o un archivo abierto demuestra otro tipo de resultado. Elige la evidencia adecuada.

Sigue con Apache Airflow: Construcción de Pipelines ETL Automatizados con DAGs

Esta lección forma parte de un curso de Cursalo. Revisa su programa y elige entre la compra individual o el acceso a toda la escuela.

Si ya tenías acceso a este curso, entra con tu cuenta: tus derechos y tu progreso se conservan. No necesitas comprarlo de nuevo.

01 / ELEGIR UNA RUTA

El próximo paso

Aprende IA mientras construyes algo que sí necesitas.

Empieza por el curso inicial o explora el catálogo para encontrar una práctica alineada con tu trabajo.