Usando Airflow para Dataops

A medida que las personas que trabajan con datos comienzan a automatizar sus procesos, inevitablemente escriben trabajos por lotes. Estos trabajos deben ejecutarse según una planificación que generalmente tienen un conjunto de dependencias en otros conjuntos de datos existentes y tienen otros trabajos que dependen de ellos.

Apache Airflow

La gestión del flujo de trabajo se ha convertido en una necesidad tan común que la mayoría de las empresas tienen múltiples formas de crear y programar trabajos internamente. Siempre hay un buen programador cron para comenzar, y muchos paquetes de proveedores se envían con capacidades de programación. El siguiente paso es automatizar los pipelines, y es aquí donde aparecen algunas soluciones que permiten resolver problemas como el almacenamiento del estado de los trabajos y las dependencias.

Por lo general, estas soluciones crecen de manera reactiva como respuesta a la creciente necesidad de programar trabajos individuales. Vamos a conocer #Airflow, una aplicación escrita en #Python desde cero por los ingenieros de #Airbnb.

Airflow

Airflow nació dentro de Airbnb como respuesta a la falta de soluciones que satisfagan sus requerimientos. Luego el proyecto fue abierto bajo licencia Open Source como proyecto Apache.

Estos son algunos de los procesos impulsados ​​por Airflow en Airbnb:

  • Almacenamiento de datos: limpia, organiza, y verifica la calidad de los datos y publica datos en su almacén de datos
  • Análisis de crecimiento: calcula las métricas en torno a la participación de invitados y anfitriones, así como la contabilidad de crecimiento
  • Experimentación: calcula la lógica y agregados de marcos de experimentación de pruebas A / B
  • Orientación por correo electrónico: aplica reglas para orientar e involucrar a los usuarios de la plataforma a través de campañas de correo electrónico
  • Sesión: calcula el flujo de clics y el tiempo dedicado a los conjuntos de datos
  • Búsqueda: calcula las métricas relacionadas con el ranking de búsqueda
  • Mantenimiento de la infraestructura de datos: raspado de bases de datos, limpieza de carpetas, aplicación de políticas de retención de datos

La creación del pipeline también se realiza en Python, lo que significa que la generación dinámica de tuberías a partir de archivos de configuración o cualquier otra fuente de metadatos es algo natural.

Why we switched to Apache Airflow – Solita

Si bien se puede comenzar a usar Airflow con solo unos pocos comandos, la arquitectura completa tiene los siguientes componentes:

  • CLI (interfaz de línea de comandos) para probar, ejecutar, rellenar, describir y borrar partes de los trabajos.
  • Una aplicación web, para explorar la definición de sus trabajos, sus dependencias, progreso, metadatos y registros. El servidor web está empaquetado con Airflow y está construido sobre el marco web Flask Python.
  • Un repositorio de metadatos, generalmente una base de datos MySQL o Postgres que Airflow utiliza para control de los estados de tareas.
  • Una serie de workers que ejecutan las instancias de tareas de forma distribuida.
  • Procesos del planificador, que activan las instancias de tareas que están listas para ejecutarse.

Extensibilidad

Si bien Airflow viene completamente cargado con formas de interactuar con sistemas de uso común como Hive, Presto, MySQL, HDFS, Postgres y S3, y le permite activar scripts arbitrarios, los módulos base se han diseñado para ampliarse con mucha facilidad.

Existen operadores que aprovechan “hooks” para generar un cierto tipo de tarea que se convierten en nodos en los flujos de trabajo cuando se instancian. Todos los operadores derivan de BaseOperator y heredan un rico conjunto de atributos y métodos. Hay 3 tipos principales de operadores:

  1. Operadores que realizan una acción o le dicen a otro sistema que realice una acción.
  2. Los operadores de transferencia mueven datos de un sistema a otro
  3. Los sensores, son un cierto tipo de operadores que seguirán funcionando hasta que se cumplan ciertos criterios

Los ejecutores implementan una interfaz que permite que los componentes de Airflow (CLI, planificador, servidor web) ejecuten trabajos de forma remota. Airflow actualmente se envía con un SequentialExecutor (para fines de prueba), un LocalExecutor roscado y un CeleryExecutor que aprovecha Celery, una excelente cola de tareas asincrónicas basada en el paso de mensajes distribuidos.

Una interfaz de usuario brillante

Si bien Airflow trae una excelente línea de comandos, la mejor manera de monitorear e interactuar con los flujos de trabajo es a través de la interfaz de usuario web. Se puede visualizar fácilmente las dependencias de los pipelines, ver cómo progresan, obtener acceso a los registros, ver el código relacionado, desencadenar tareas, corregir falsos positivos / negativos, analizar dónde se invierte el tiempo y obtener una vista completa de como terminan las diferentes tareas. La interfaz de usuario también es un lugar donde se exponen algunas funciones administrativas: administrar conexiones, grupos y pausar el progreso en ejecuciones específicas.

Airflow: a workflow management platform - Airbnb Engineering ...

Ademas, y como plato fuerte, la interfaz de usuario sirve una sección de perfil de datos que permite a los usuarios ejecutar consultas SQL en las conexiones registradas, examinar los conjuntos de resultados y ofrecer una forma de crear y compartir gráficos simples. La aplicación de gráficos es una combinación de Highcharts, la interfaz CRUD de Flask Admin y las bibliotecas de hooks y macros de Airflow. Los parámetros de URL se pueden pasar al SQL en su gráfico, y las macros Airflow están disponibles a través de la plantilla Jinja. Con estas características, los usuarios de Airflow pueden crear y compartir fácilmente consultas, conjuntos de resultados y gráficos.

Un catalizador

Airbnb dice que como resultado del uso de Airflow, la productividad y el entusiasmo de las personas que trabajan con datos se han multiplicado. El proceso de creación se ha acelerado y la cantidad de tiempo de monitoreo y solución de problemas se reduce significativamente. Más importante aún, esta plataforma permite a las personas ejecutar a un nivel más alto de abstracción, creando bloques de construcción reutilizables, así como marcos y servicios de cómputo.
Para conocer mas sobre Airflow, este el sitio de Airbnb: https://github.com/airbnb/airflow


[popup_anything id=”2076″]