Anda di halaman 1dari 7

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
programación, generalmente tienen un conjunto de dependencias en otros conjuntos de datos
existentes y tienen otros trabajos que dependen de ellos. Agrupe a algunos trabajadores de datos
por un corto período de tiempo y rápidamente tendrá una gráfica cada vez más compleja de
trabajos por lotes de cómputo. Ahora, si considera a un equipo de datos mediano y de ritmo
acelerado durante algunos años en una infraestructura de datos en evolución y tiene una red de
trabajos de computación sumamente compleja en sus manos. Esta complejidad puede convertirse
en una carga importante para que los equipos de datos administren o incluso comprendan.

Estas redes de trabajos suelen ser DAG ( gráficos acíclicos dirigidos ) y tienen las siguientes
propiedades:

 Programado: cada trabajo debe ejecutarse en un determinado intervalo programado

 Misión crítica: si algunos de los trabajos no se están ejecutando, estamos en problemas

 Evolución: a medida que la empresa y el equipo de datos maduran, también lo hace el


procesamiento de datos.

 Heterógena: la pila para la analítica moderna está cambiando rápidamente, y la mayoría


de las empresas ejecutan varios sistemas que deben estar pegados

Cada empresa tiene uno (o muchos)

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. Para comenzar,
siempre hay un cronógrafo viejo y bueno, y muchos paquetes de proveedores se entregan con
capacidades de programación. El siguiente paso es hacer que los scripts llamen a otros scripts, y
eso puede funcionar por un corto período de tiempo. Eventualmente, surgen marcos simples para
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, y generalmente porque la encarnación actual del
sistema no permite un escalado simple.También tenga en cuenta que las personas que escriben
líneas de datos no suelen ser ingenieros de software, y su misión y competencias se centran en el
procesamiento y análisis de datos, no en la creación de sistemas de gestión de flujo de trabajo.

Teniendo en cuenta que los sistemas de gestión de flujo de trabajo que crecen internamente a
menudo están al menos a una generación detrás de las necesidades de la compañía, la fricción
en torno a la creación, programación y solución de problemas de los trabajos crea ineficiencias y
frustraciones masivas que desvían a los trabajadores de datos de su camino productivo.
AirFlow

Después de revisar las soluciones de código abierto y aprovechar la información de los empleados
de Airbnb sobre los sistemas que habían usado en el pasado, llegamos a la conclusión de que no
había nada en el mercado que cumpliera con nuestras necesidades actuales y futuras. Decidimos
construir un sistema moderno para resolver este problema adecuadamente. A medida que el
proyecto avanzaba en el desarrollo, nos dimos cuenta de que teníamos una oportunidad increíble
para devolver a la comunidad de código abierto en la que dependíamos tanto. Por lo tanto, hemos
decidido abrir el proyecto de código fuente bajo la licencia de Apache.

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

 Almacenamiento de datos: limpie, organice, verifique la calidad de los datos y publique


datos en nuestro creciente almacén de datos

 Análisis de crecimiento: calcule las métricas en torno al compromiso del huésped y el


anfitrión, así como la contabilidad del crecimiento.

 Experimentación: calcule nuestra lógica y agregados de marcos de experimentación de


pruebas A / B

 Orientación por correo electrónico: aplique reglas para orientar e involucrar a nuestros
usuarios a través de campañas de correo electrónico.

 Sesionización: calcular el flujo de clics y el tiempo dedicado a los conjuntos de datos

 Búsqueda: compute search ranking related metrics

 Mantenimiento de la infraestructura de datos : raspaduras de la base de datos, limpieza


de carpetas, aplicación de políticas de retención de datos, ...

Arquitectura

Al igual que el inglés es el idioma de los negocios, Python se ha establecido firmemente como el
idioma de los datos. El flujo de aire se escribe en pitón Python desde cero. El código base es
extensible, documentado, consistente, lineal y tiene una amplia cobertura de pruebas unitarias.

La creación de tuberías 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. La " configuración como código " es un principio que respaldamos para este propósito. Si
bien la configuración del trabajo yaml o json permitiría utilizar cualquier lenguaje para generar
tuberías de flujo de aire, sentimos que se pierde algo de fluidez en la traducción. Ser capaz de
realizar una introspección de subclase de código (ipython!, IDE), un meta-programa y usar
bibliotecas de importación para ayudar a escribir tuberías agrega un valor tremendo. Tenga en
cuenta que todavía es posible crear trabajos en cualquier idioma o marca, siempre que escriba
Python que interprete estas configuraciones.
Si bien puede comenzar a utilizar Airflow con solo unos pocos comandos, la arquitectura completa
tiene los siguientes componentes:

 Las definiciones de trabajo, en control de código fuente.

 Un rico CLI (interfaz de línea de comandos) para probar, ejecutar, rellenar, describir y
borrar partes de sus DAG.

 Una aplicación web, para explorar la definición de sus DAG, sus dependencias, progreso,
metadatos y registros. El servidor web está empaquetado con Airflow y está construido
sobre el marco web de Flask Python.

 Un repositorio de metadatos, generalmente una base de datos MySQL o Postgres que


Airflow utiliza para realizar un seguimiento de los estados de tareas y otra información
persistente.

 Una matriz de trabajadores, ejecutando las tareas tareas de forma distribuida.

 Procesos del programador, que activan las instancias de tarea que están listas para
ejecutarse.

Extensibilidad

Si bien Airflow está completamente cargado con formas de interactuar con sistemas de uso común
como Hive, Presto, MySQL, HDFS, Postgres y S3, y permitirle activar scripts arbitrarios, los módulos
básicos se han diseñado para que se puedan extender muy fácilmente.

Los ganchos se definen como abstracción de sistemas externos y comparten una interfaz
homogénea. Los ganchos utilizan una bóveda centralizada que extrae la información del host /
puerto / inicio de sesión / contraseña y expone los métodos para interactuar con estos sistemas.

Los operadores aprovechan los enganches para generar un cierto tipo de tarea que se convierte
en nodos en flujos de trabajo cuando se crea una instancia. Todos los operadores se derivan de
BaseOperator y heredan un rico conjunto de atributos y métodos. Hay 3 tipos principales de
operadores:

 Operadores que realizan una acción o le dicen a otro sistema que realice una acción

 Los operadores de transferencia mueven datos de un sistema a otro

 Los sensores son un cierto tipo de operadores que continuarán funcionando hasta que se
cumplan ciertos criterios

Los ejecutores implementan una interfaz que permite que los componentes de Airflow (CLI,
programador, servidor web) ejecuten trabajos de forma remota. El flujo de aire actualmente se
envía con un SequentialExecutor (para propósitos de prueba), un LocalExecutor de subprocesos y
un CeleryExecutor que aprovecha Celery , una excelente cola de tareas asíncronas basada en el
paso de mensajes distribuidos. También estamos planeando compartir un Ejecutor de Yarn en un
futuro próximo.

Una interfaz de usuario brillante

Si bien Airflow expone una rica interfaz de 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. Puede visualizar
fácilmente las dependencias de sus tuberías, ver cómo progresan, obtener un acceso fácil a los
registros, ver el código relacionado, desencadenar tareas, corregir falsos positivos / negativos,
analizar dónde se gasta el tiempo y obtener una vista completa a qué hora de El día suelen
terminar diferentes tareas. La interfaz de usuario también es un lugar donde se exponen algunas
funciones administrativas: administrar conexiones, agrupaciones y detener el progreso en DAG
específicos.
Para ponerle un toque especial a esto, la interfaz de usuario sirve una sección de generación de
perfiles de datos que permite a los usuarios ejecutar consultas SQL en las conexiones registradas,
explorar los conjuntos de resultados y ofrecer una manera de crear y compartir gráficos
simples. La aplicación de gráficos es un mashup de Highcharts , la interfaz CRUD del administrador
de Flask y las bibliotecas de macros y ganchos de Airflow. Los parámetros de URL se pueden pasar
al SQL en su gráfico, y las macros de Airflow están disponibles a través de plantillas Jinja . Con
estas características, los usuarios de Airflow pueden crear y compartir fácilmente las consultas, los
conjuntos de resultados y los gráficos.
Un catalizador

Como resultado del uso de Airflow, la productividad y el entusiasmo de las personas que trabajan
con datos se ha multiplicado en Airbnb. 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 que las personas se ejecuten a un nivel más alto de abstracción, creando
bloques de construcción reutilizables, así como marcos de trabajo y servicios de computación.

¡Basta de charla!

Hemos hecho que sea extremadamente fácil realizar una prueba de manejo de Airflow mientras se
alimenta a través de un tutorial esclarecedor. Los resultados de recompensa están a unos cuantos
comandos de shell. Consulte las secciones de inicio rápido y tutoriales de la documentación de
Airflow . ¡Debe poder tener su aplicación web Airflow cargada con ejemplos interactivos en tan
solo unos minutos!

https://github.com/airbnb/airflow

Anda mungkin juga menyukai