Skip to main content
Loading...

NiFi en acción

Inspiring technology by Hunters

Nuestros Hunters siguen trayéndonos más novedades tecnológicas. En esta ocasión nos hablan de Apache NiFi. ¡Sigue leyendo!

A día de hoy, la necesidad de que los datos fluyan en distintos formatos entre sistemas heterogéneos es un hecho innegable:

  • Estadísticas obtenidas de clics de las webs donde los usuarios interactúan
  • Información escondida en correos
  • Patrones en imágenes
  • Señales mandadas por sensores que controlan maquinaria industrial

La información puede venir de cualquier sitio y los sistemas informáticos deben ser capaces de recibir dichos datos y darles el tratamiento adecuado para que puedan ser útiles en escenarios como pueden ser la implementación de patrones de conducta, el desarrollo de IAs capaces de detectar cánceres en imágenes que el ojo humano no alcanza a ver o la predicción de cuando un componente de una maquinaria puede estar a punto de fallar.

La información es poder, pero hay que ser capaz de extraerla a partir de unos datos que no siempre se presentan de manera sencilla. 

En Ingeniería de datos se distinguen cuatro grandes bloques de trabajo:

  1. Ingesta: Recolección de datos de cualquier fuente
  2. Transformación: Reparación de datos a un formato que facilite su análisis
  3. Análisis: Extracción de información
  4. Almacenamiento: Almacenamiento de datos

Apache NiFi

Apache NiFi es una herramienta opensource pensada para la automatización de flujos extracción transformación y carga (ETL) a través de flujos diseñados visualmente. No obstante, las transformaciones que Apache NiFi puede realizar no son muy potentes, pero ofrece grandes capacidades en cuanto a la ingesta de datos se refiere por lo que es común verlo integrados en sistemas de Big Data.

Además, es capaz de trabajar en tiempo real, por lo que puede ser integrado en cualquier flujo de procesado de datos moderno.

Componentes básicos

Flow: El workflow o topología es la definición del flujo de datos que se implementa en NiFi e indica la forma en la que se deben gestionar los datos.

Flowfile: Es el paquete de datos que viaja por el flow entre los procesadores. Está compuesto por un puntero al propio dato útil o contenido (un array de bytes) y metadatos asociados llamados atributos. Para acelerar el rendimiento del sistema, el flowfile no contiene el propio dato, sino que apunta al dato en el almacenamiento local. Muchas de las operaciones que se realizan en NiFi no alteran el propio dato ni necesitan cargarlo en memoria. En concreto, el dato se encuentra en el llamado repositorio de contenido (Content Repository).

Flowfile

Processor: Se encargan de ejecutar las tareas de extracción, transformación o carga de datos. NiFi permite realizar operaciones diversas en los processors, así como distribuir y programar su ejecución. Estos componentes también proporcionan una interfaz para acceder a los flowfiles y sus propiedades. Apache NiFi tiene más de 280 processors disponibles y si fuera necesario se permiten generar nuevos a través de una api Java

Connection: Son componentes que permiten a dos Processors cualesquiera interactuar. Permite el paso de flowfiles entre componentes, de hecho, actúan como buffers, y de hecho, disponen de un sistema de backpressure en función del número de eventos o tamaño en disco. También es posible establecer caducidad o prioridad para los flowfiles. Finalmente, Apache NiFi permite la agrupación de varias connections en una.

Process Group: Agrupación de processors y connections para tratarlos como una unidad lógica independiente dentro del flujo de procesamiento. Para interactuar con el resto de componentes tienen puertos de entrada y de salida que gestionan el envío de flowfiles.

Controller Service: Los controller service se utilizan para compartir un recurso entre distintos processors. La herramienta permite conexiones fluidas con APIs externas, así como con sistemas de almacenamiento distribuidos como HDFS, Amazon S3, Azure Blob Storage y Google Cloud Storage, ofreciendo autenticación avanzada y optimización en la gestión de peticiones de gran volumen.

Arquitectura

El Flowfile Repository almacena los flowfiles de los flujos de trabajo, tanto metadatos como punteros a contenido. También almacena la cola en la que se encuentra en ese momento. Mantiene solamente el estado más actualizado del sistema mediante el Write-Ahead Log, lo que garantiza recuperar el estado más actualizado frente a una caía del sistema.

El Content Repository guarda el contenido de los flowfiles. Cada modificación del contenido de un flowfile es historificada, es decir, se realiza una copia del valor actual al escribir antes de modificar el contenido. Este no tiene por qué ser único en el sistema y puede estar dividido en secciones.
 
El Provenance repository guarda información de la procedencia y origen de los flowfiles mediante el uso de snapshots a partir de los cuales se puede se puede restablecer el ciclo de vida de cada flowfile. Por tanto, este repositorio añade la dimensión tiempo.

Arquitectura

Comparación con otros sistemas

Para evaluar las capacidades de Apache NiFi en el contexto de otras herramientas de integración y procesamiento de datos, podemos ver una comparativa que destaca las características clave de cada solución, como su orientación de flujos (en tiempo real, en lote o ambas), la escalabilidad, la gestión de errores, y la compatibilidad con el almacenamiento distribuido y APIs.

¿Quieres saber más sobre Hunters?

Ser un hunter es aceptar el reto de probar nuevas soluciones que aporten resultados diferenciales. Únete al programa Hunters y forma parte de un grupo transversal con capacidad de generar y transferir conocimiento.

Anticípate a las soluciones digitales que nos harán crecer. Consulta más información sobre Hunters en la web.

Diego Ríos
Ingeniero de datos
Altia