Oozie vs Airflow, Open Source Data Pipeline

Oozie vs Airflow, Open Source Data Pipeline

Anteriormente ya hemos hablado sobre sistemas de ingestión de datos, como es Apache NiFi o, también, de transformación de la información, como Apache Flink. Pero hoy venimos con sistemas de Data Pipeline o, también conocidos como Workflows. Hablaremos sobre Oozie y Airflow.

Data Pipeline

Oozie

Oozie es un sistema para la gestión de flujos de trabajo de código abierto escrito en Java para sistemas Hadoop. Oozie se centra, mayormente, en la flexibilidad y en la creación de flujos de trabajo complejos, permitiéndonos tener trabajos activos por tiempo, por eventos o tener disponibilidad de datos según las situaciones en que la disponibilidad de los mismos pueda ser impredecible. Con una potente API escrita en Java, un dashboard web o mediante configuración en ficheros XML tendremos un total control de nuestros flujos de trabajo. Una característica importante es que Oozie usa una base de datos SQL y solo utiliza su memoria para transacciones de estado.

Algunas features importantes son:

  • Proporciona compatibilidad inmediata con Mapreduce, Apache Pig, Hive, Sqoop y Distcp.
  • Es un Sistema Escalable, confiable y extensible.
  • Los flujos de trabajo que son idénticos se pueden parametrizar para que se ejecuten simultáneamente.
  • Permite realizar trabajos masivos, suspender o reanudar trabajos.
  • Tiene una Alta disponibilidad.
  • Los trabajos múltiples como los flujos de trabajo se pueden empaquetar y administrar juntos a través de Oozie Bundle.

Airflow

De Airflow ya hemos, brevemente, hablado anteriormente, cuando explicamos un caso de distribución de datos en “Real-Time”. Cabe destacar de Airflow que es un proyecto iniciado por el equipo de Airbnb Engineering y que se creó en 2015 con la intención de poder programar y monitorear flujos de trabajo. Fue desarrollado para un entorno programático con un enfoque en la autoría. Está basado en Python y su arquitectura se compone de las definiciones de los flujos de trabajo, de una interfaz de línea de comandos donde se pueden probar, ejecutar y describir las distintas partes de los Directed Acyclic Graph (DAG) como de una aplicación web (Dashboard) para explorar dependencias, progreso, metadatos y registros. Es interesante su repositorio de metadatos, la posibilidad de crear tareas de trabajo distribuidas y los procesos del planificador que activan las tarea cuando están listas para ejecutarse.

Algunas features importantes son:

  • Cuenta con una CLI y una Shiny UI enriquecidas que permiten a los usuarios visualizar dependencias, progresos, registros, códigos relacionados y cuando se completan varias tareas.
  • Es Modular, escalable y altamente extensible.
  • Dispone de una aplicación web (Dashboard), para explorar las definiciones de los DAGs, sus dependencias, progreso, metadatos y registros. El servidor web está empaquetado con Airflow y está construido sobre el Framework web Flask Python.
  • Dispone de scripts de parametrización que se pueden construir utilizando su motor de plantillas Jinja.
  • Interactua fácilmente tanto con Hive, Presto, MySQL, HDFS, Postgres o AWS S3.

La editorial de la UOC siempre dispone de buenos libros que nos ayudan en nuestro día a día, hoy recomendamos el libro de: Introducción a Apache Spark.

NOTA: Recuerda que si pulsas en el enlace del libro, me gano una pequeña comisión sin que a ti te cueste nada extra y me estarás ayudando con los costes de mantenimiento del Blog.

Comentarios, opiniones y valoración: Si lo tuyo es dibujar flujos de información, me gustaría saber qué tienes que decir a través de las redes sociales.

Autor: Joakim Vivas

comments powered by Disqus