Portada » ETL para paquetes de Big Data: ejemplos de uso de Apache AirFlow

ETL para paquetes de Big Data: ejemplos de uso de Apache AirFlow

by Donal Sandro Noblejas Huaman

 Hola mi nombre es donal Sandro Noblejas Huamán de Lima Perú 🇵🇪 hoy vengo con otro artículo de  Ciencia de Datos y como siempre y en cada uno de ellos completamente solo y me agrada porque se aprende, y como siempre sin empresas, personas, familiares, ni el estado ni ningún tipo de ayuda cuidado con los estafadores solo en mis tiempos libres redactando jejeje, bueno ahí vamos.

En este artículo hablaremos sobre Apache AirFlow , una herramienta eficaz para tareas ETL por lotes cuando se trabaja con Big Data : qué es, cómo funciona y qué utilidad tiene para un ingeniero de datos. También consideraremos varios ejemplos prácticos del uso real de esta biblioteca para desarrollar, planificar y monitorear procesos por lotes.

¿QUÉ ES ETL Y QUÉ TIENE QUE VER APACHE AIRFLOW CON ÉL?

Los procesos ETL (Extract, Transform, Load) son una parte integral de los sistemas modernos de inteligencia empresarial (BI, Business Intelligence) y se utilizan para integrar muchos sistemas de información corporativos con el fin de unificar y analizar los datos almacenados en ellos [1] . Podemos decir que hoy en día ETL es un componente obligatorio de la infraestructura corporativa basada en tecnologías Big Data, cuando los datos originales (“en bruto”) se transforman en información adecuada para el análisis empresarial. ETL incluye los siguientes pasos:

• extraer datos (Extract) de diversas fuentes (registros de usuario y del sistema, DBMS relacionales, conjuntos de datos externos, por ejemplo, de redes sociales y otros sitios web);

• transformación ,(transform) cuando se aplican varias operaciones de lógica empresarial a la información: filtrado, agrupación y agregación para transformar datos sin procesar en un conjunto de datos listo para el análisis;

• Carga : (load)envío de información procesada a la ubicación de uso final: Data Lake , DBMS, data mart, aplicación en la nube, etc.

Existen muchos sistemas ETL listos para usar que implementan funciones para cargar información en un almacén de datos corporativo, por ejemplo, Informatica PowerCenter , Oracle Data Integrator , SAP Data Services , Oracle Warehouse Builder , Talend Open Studio , Pentaho , etc. Sin embargo, en la práctica, cuando se trata de grandes volúmenes de datos a altas velocidades y de una infraestructura de Big Data existente, pocas personas utilizan este tipo de soluciones en caja. Por ejemplo, en este caso, un conjunto típico de tareas podría verse así: crear una muestra de datos a partir de HDFS y varios DBMS relacionales, procesar la información y guardar el resultado en una tabla de Apache.Hive . Además, cada proceso se puede paralelizar utilizando, por ejemplo, Apache Spark [2] .

Por lo tanto, el ingeniero de datos se enfrenta a la necesidad de crear sus propios canales de procesamiento y entrega de datos utilizando marcos ETL especiales . Al elegir una herramienta de este tipo para Big Data, conviene recordar dos tipos de procesamiento de datos: streaming y por lotes. Apache NiFi , hace frente con éxito a las tareas de enrutamiento continuo y entrega de datos en streaming .

Y para los procesos de Big Data por lotes, Apache Airflow es un conjunto de bibliotecas de código abierto para desarrollar, planificar y monitorear flujos de trabajo. Esta herramienta está escrita en el lenguaje de programación Python y le permite crear y configurar cadenas de tareas tanto visualmente utilizando una GUI web visual como escribiendo código Python. Las tareas de canalización de datos que deben realizarse en una secuencia estrictamente definida de acuerdo con un cronograma específico dentro de una única cadena semántica generalmente se denominan DAG (Gráfico acíclico dirigido) [3] .

3 EJEMPLOS DE USO DEL FLUJO DE AIRE EN BIG DATA

A pesar de que AirFlow comúnmente se denomina herramienta ETL, no es un sistema ETL clásico, sino que solo ayuda a presentar el proceso de extracción, transformación y carga de datos como un solo proyecto en Python. Al mismo tiempo, brinda la capacidad de automatizar la gestión de DAG, escalar tareas y monitorear su ejecución. Por lo tanto, AirFlow se utiliza ampliamente para implementar procesos ETL en sistemas Big Data de diversas áreas de aplicación.

Por ejemplo, Adobe, Lenovo , Nokia usan AirFlow para tareas ETL por lotes. . En particular, casi 2,5 mil tareas ELT están relacionadas con Data Lake basado en Apache Hadoop . Con una evaluación generalmente positiva de AirFlow, los especialistas también señalan sus desventajas, en particular, los grandes costos generales (retraso de 5 a 10 segundos) [3] :

• poner en cola DAG,

• priorización de tareas al inicio;

• dependencia de la disponibilidad de un espacio libre en el grupo y una instancia de trabajo del programador de tareas.

Una aplicación en linea , que utiliza Airflow para ejecutar y monitorear aplicaciones Spark, ha encontrado problemas similares . Sin embargo, esta herramienta de gestión de procesos por lotes ha hecho posible optimizar la gestión de los canales de datos, garantizando que cada canal de datos se ejecute exactamente según lo previsto. Y en caso de falla, la información al respecto aparecerá rápidamente en la GUI web y la cadena de tareas en sí se puede reiniciar rápidamente con un botón [4] .

También es interesante la experiencia del mercado nacional de ropa y accesorios . al usar AirFlow, puedes implementar un servicio de sugerencias en su sitio web que ayuda a los usuarios a encontrar el artículo correcto entre 4 millones de productos y 3 mil marcas. Cabe destacar que los consejos se muestran según la temporada, el nivel de ventas y las preferencias del usuario. En este caso, además de AirFlow, también se utilizan otras herramientas del stack Big Data y más [5] :

• Apache Solr es una plataforma de búsqueda de texto completo de código abierto;

• PostgreSQL es un sistema gratuito de gestión de bases de datos relacionales de objetos;

• Docker: software para automatizar la implementación y gestión de aplicaciones en entornos en contenedores;

• Grafana: software de visualización interactiva y análisis multiplataforma de código abierto: cuadros, gráficos y alertas para la web cuando se conecta a fuentes de datos compatibles;

• Prometheus es una aplicación de software de monitoreo de eventos gratuita que registra métricas en tiempo real en una base de datos de series temporales utilizando un modelo de solicitud HTTP, consultas flexibles y alertas en tiempo real.

Componentes del servicio de sugerencias un sitio web de moda: Apache AirFlow, Solr, Docker, Prometheus, PostgreSQL, Grafana.

Ahora hablaremos sobre las ventajas y desventajas clave de AirFlow. Y aprenderá los detalles técnicos de cómo un ingeniero de datos puede utilizar esta herramienta para tareas ETL .

Continuando hablando sobre el entrenamiento de Airflow , hoy veremos las ventajas clave y los principales problemas de esta biblioteca para automatizar tareas por lotes que se repiten con frecuencia para procesar big data ( Big Data ). 

Lo bueno de Apache AirFlow: principales ventajas

Habiendo analizado el propósito de la aplicación y la funcionalidad de Apache Airflow, podemos concluir que las principales cualidades positivas de este marco para desarrollar, planificar y monitorear procesos por lotes para trabajar con big data son las siguientes:

• un conjunto de herramientas pequeño pero completo para crear y gestionar procesos de procesamiento de datos: 3 tipos de operadores (sensores, procesadores y transferencias), un cronograma de lanzamiento para cada cadena de tareas, registro de fallas [1] ;

• una interfaz web gráfica para crear canales de datos, que proporciona una barrera de entrada relativamente baja a la tecnología, lo que permite no solo a un ingeniero de datos, sino también a un analista, desarrollador, administrador e ingeniero de DevOps trabajar con  Airflow . El usuario puede realizar un seguimiento visual del ciclo de vida de los datos en cadenas de tareas relacionadas, presentadas en forma de gráfico acíclico dirigido [2] .

• API REST extensible , que es relativamente fácil de integrar Airflow en el panorama de TI existente de la infraestructura corporativa y configurar de manera flexible canalizaciones de datos, por ejemplo, pasando parámetros POST a DAG [3] . 

• Código de programa en Python , que se considera un lenguaje relativamente sencillo de dominar y el estándar profesional de facto para un especialista moderno en el campo de Big Data y ciencia de datos : ingeniero, analista, desarrollador de big data y especialista en aprendizaje automático [4] .

• Integración con muchas fuentes y servicios : bases de datos (MySQL, PostgreSQL, DynamoDB, Hive ), almacenamiento de Big Data ( HDFS , Amazon S3) y plataformas en la nube (Google Cloud Platform, Amazon Web Services, Microsoft Azure) [2] .

• Tener un repositorio de metadatos propio basado en la biblioteca SqlAlchemy, donde se almacenan estados de tareas, DAG, variables globales, etc. [5] .

• Escalabilidad debido a la arquitectura modular y la cola de mensajes para un número ilimitado de DAG [5] .

 Código de ejemplo de tareas ETL en Python en AirFlow y visualización gráfica de la cadena de tareas en forma de DAG

Limitaciones clave y formas de solucionarlas

La otra cara de las ventajas anteriores son las siguientes desventajas:

• la presencia de dependencias implícitas durante la instalación , por ejemplo, paquetes adicionales como greenlet, gevent, cryptography, etc., complican la rápida configuración de este framework [5] ;

• grandes costos generales (retraso de 5 a 10 segundos) para poner en cola los DAG y priorizar tareas en el inicio [4] ;

• la necesidad de tener un espacio libre en el grupo de tareas y una instancia funcional del programador. Por ejemplo, los ingenieros de datos de ¿??  asignan sensores (operadores para la extracción de datos, la operación de extracción en el proceso ETL) en un grupo separado, controlando así el número y priorizándolos, reduciendo el retraso general (latencia) es solo un decir pero se puede hacer.

• Las notificaciones post-facto sobre fallas en la canalización de datos , en particular, los registros aparecerán en la interfaz de Airflow solo después de que se haya procesado un trabajo, por ejemplo, un trabajo Spark . Por lo tanto, debe monitorear en línea cómo se ejecuta la canalización de datos desde otros lugares, por ejemplo, la interfaz web de YARN . Esta es exactamente la decisión de trabajar con Apache Spark y Airflow que se tomó en algun sitio.

• Separación por operador : cada operador de Airflow se ejecuta en su propio intérprete de Python. El archivo que se crea para definir un DAG no es solo un script que procesa algunos datos, sino un objeto. Durante la ejecución, las tareas DAG no pueden cruzarse, ya que se ejecutan en diferentes objetos y en diferentes momentos. Al mismo tiempo, en la práctica, a veces es necesario ejecutar varios operadores de Airflow en un contexto Spark sobre el espacio común de marcos de datos . Esto se puede implementar utilizando Apache Livy, un servicio REST-API para interactuar con el clúster Spark, como lo hace la empresa AlfaStrakhovanie [6] , del que hablaremos con más detalle aquí .

 Un ejemplo de un sistema Big Data basado en Apache Airflow, Livy, PostreSQL y servicios web de Amazon

Autor Donal Sandro Noblejas Huamán

Lima Perú 🇵🇪 

Sitio web verlista.com/blog

facebook.com/verlistaa

https://pe.linkedin.com/in/donal-sandro-noblejas-huaman

You may also like

Leave a Comment

Are you sure want to unlock this post?
Unlock left : 0
Are you sure want to cancel subscription?
-
00:00
00:00
Update Required Flash plugin
-
00:00
00:00