Apache Nifi

Definición de Nifi

Apnifi logoache NiFi es una plataforma integrada de procesamiento y logística de datos en tiempo real, para automatizar el movimiento de datos entre diferentes sistemas de forma rápida, fácil y segura.

Apache Hifi es una herramienta ETL que se encarga de cargar datos de diferentes fuentes, los pasa por un flujo de procesos para su tratamiento, y los vuelca en otra fuente.

Se caracteriza por tener una interface web, muy potente e intuitiva que permite diseñar y configurar de forma visual el flujo de datos así como operar sobre el proceso (arranque y parada) y monitorizar el estado en búsqueda de posibles errores que se vayan produciendo.

Apache NiFi se basa en “Niagara Files”. Fue desarrollado y liberado por la NSA que lo utiliza desde 2010.

Ejemplo de aplicacion nifi1

Ejemplo de aplicacion nifi

 

Características

  • Ingesta de información no afectar al rendimiento del servicio de la fuente origen ni destino.
  • Carga y grabado de datos con una amplia variedad de tecnologías: HDFS, ElasticSearch, FTP, bases de datos SQL, MongoDB,…
  • Transformación entre numerosos formatos de datos como: JSON, XML, Avro, CSV,…
  • Permite la delegación de funcionalidades a otros sistemas de procesamiento, como:
    • Apache Karfa: comunicación bidireccional con un tercero, mediante la utilización de colas.
    • Apache Flume: ejecución transparente de procesos.
  • Ejecución en paralelo mediante Apache ZooKeeper, que permite correr múltiples instancias de Nifi (o MiNifi proyecto derivado que  proporciona un rumtime con bajos requerimientos
  • Independencia de las fuentes de datos, ya que admite fuentes dispersas y distribuidas de diferentes formatos, esquemas, protocolos, velocidades y tamaños, máquinas, ubicaciones geográfica, …
  • Proporciona una interfaz gráfica que facilita enormemente el tratamiento.
  • Permie rastreo de datos en tiempo real.
  • Flexibilidad para ajustarse dinámicamente a una conectividad de red fluctuante que podría afectar las comunicaciones.

 

Arquitectura

architecture nifi

architecture nifi

Web Server: el propósito del servidor web es alojar HTTP-based y control del API.

Flow Controller: el controlador de flujo es el cerebro de la operación. Proporciona hilos para que las extensiones se ejecuten y gestiona la planificación de cuándo recibirán recursos para ejecutar.

Extensions: Existen varios tipos de extensiones pero todas las extensiones operan / ejecutan dentro de la Máquina Virtual de Java.

FlowFile Repository: el repositorio de flujo de fichero realiza un seguimiento del estado de lo que sabe sobre un fichero de flujo que está actualmente activo en el flujo. La implementación del repositorio es conectable. El enfoque predeterminado es un registro de escritura anticipada persistente que vive en una partición de disco especificada.

Content Repository: el repositorio de contenidos es donde se encuentran los bytes de contenido reales de un FlowFile determinado. La implementación del repositorio es conectable. El enfoque predeterminado es un mecanismo bastante simple, que almacena bloques de datos en el sistema de archivos. Se puede especificar más de una ubicación de almacenamiento del sistema de archivos para particiones físicas diferentes a fin de reducir a un solo volumen.

Provenance Repository:  el repositorio de proveniencias es donde se almacenan todos los datos de eventos de procedencia. La construcción del repositorio es conectable con la implementación predeterminada que incluye uno o más volúmenes de discos físicos. Dentro de cada ubicación, los datos de los eventos se indexan para poder buscarlos.

 

Fuente: Web Oficial

Autor: Diego Calvo