Apache Nifi
Una plataforma de logística de datos integrados en tiempo real y de procesamiento de eventos sencillos
Apache NiFi automatiza el movimiento de datos entre fuentes y sistemas de datos diversos, contribuyendo a una ingesta de datos rápida, sencilla y segura.
Finalidad de Apache NiFi
Apache NiFi es una plataforma de logística de datos integrados para la automatización del movimiento de datos entre sistemas diversos. Ofrece control en tiempo real y facilita el movimiento de datos entre cualquier fuente y destino. Es independiente de la fuente de datos, por lo que ofrece compatibilidad con fuentes diversas y distribuidas en diferentes formatos, esquemas, protocolos y tamaños, tales como máquinas, dispositivos de geolocalización, recorridos de clics, archivos, fuentes de redes sociales, archivos de registro, vídeos, etc. Se pueden configurar diferentes combinaciones para mover los datos, algo similar a la forma que tienen Fedex, UPS y otros servicios de paquetería de distribuir sus repartos. Y al igual que esos servicios, Apache NiFi permite seguir los datos en tiempo real, como se haría con el seguimiento de un pedido.
Apache NiFi se basa en la tecnología conocida anteriormente como “Niagara Files”. La NSA desarrolló y utilizó a escala esta tecnología durante ocho años y después la cedió a Apache Software Foundation a través del programa de transferencia de tecnología de la NSA. Por lo tanto, se trata de una tecnología diseñada desde el primer momento para un uso real: es flexible, extensible y adecuada para una amplia variedad de dispositivos, desde dispositivos del edge de la red ligeros y pequeños, como una Raspberry Pi, hasta la nube, pasando por clústeres de datos empresariales. Apache NiFi también se ajusta de forma dinámica la conectividad de la red, cuyas fluctuaciones pueden afectar a las comunicaciones y, por lo tanto, a la entrega de los datos.
Descripción general de NiFi
Mientras que el término dataflow se usa en diversos contextos, en este caso hace referencia al flujo automatizado y gestionado de información entre sistemas. El problema del espacio existe desde que las empresas cuentan con más de un sistema, algunos de ellos creando datos y los otros consumiéndolos. Los problemas y los patrones de soluciones que han surgido ya han sido analizados y estudiados en profundidad. Puede consultar información exhaustiva y de consulta habitual en Enterprise Integration Patterns [eip]. Algunos de los retos más relevantes que plantea el dataflow son los siguientes:
Los sistemas tienen fallos
La red, los discos, el software... todos pueden fallar en algún momento, sin olvidar el error humano.
El acceso a los datos supera la capacidad de consumo
En ocasiones, una determinada fuente de datos puede superar a alguna parte de la cadena de procesamiento o entrega. En esos casos, basta con un solo eslabón débil para que surjan complicaciones.
Las condiciones límite son meras sugerencias
Siempre recibirá datos que son demasiado grandes, demasiado, pequeños, demasiado lentos, dañados, erróneos o en un formato incorrecto.
Lo que un día es ruido mañana puede cobrar sentido
Las prioridades de una organización cambian rápidamente. Para dar paso a nuevos flujos y modificar los existentes hay que hacerlo con rapidez.
Los sistemas evolucionan a ritmos diferentes
Los protocolos y los formatos que usa un sistema concreto pueden cambiar en cualquier momento, a menudo con independencia de los sistemas que los rodean. El dataflow sirve para conectar lo que, en esencia, es un sistema masivamente distribuido de componentes que se han diseñado para colaborar poco o nada en absoluto.
Cumplimiento y seguridad
Las leyes, las normativas y las políticas cambian. Los acuerdos entre empresas cambian. Las interacciones entre sistemas y entre usuarios y sistemas deben ser seguras, fiables y responsables.
La mejora continua se consigue en la fase de producción
Normalmente no es posible replicar ni siquiera aproximadamente los entornos de producción en el laboratorio.
Con el tiempo, el dataflow se ha convertido en uno de esos males necesarios de una arquitectura. Sin embargo, en la actualidad existen varios movimientos activos y dinámicos que están logrando que el dataflow cobre mucho más interés y resulte crucial para que una empresa alcance sus objetivos. Estos movimientos son, entre otros, la arquitectura orientada a los servicios [soa], el auge de las API [api][api2], el internet de las cosas [iot] y el Big Data [bigdata]. Además, aspectos como el cumplimiento, la privacidad y la seguridad exigen cada vez un mayor nivel de rigor. Aun así, incluso con la aparición de todos estos nuevos conceptos, los patrones y las necesidades del dataflow apenas cambian. Las principales diferencias son el alcance de la complejidad, la velocidad a la que hay que adaptarse al cambio y que, en proporción, la presencia del edge es cada vez más habitual. NiFi se ha diseñado para abordar estos retos que plantea el dataflow moderno.
Conceptos esenciales
Los conceptos de diseño esenciales de NiFi están estrechamente relacionados con las ideas básicas de la programación basada en flujos [FBP]. A continuación, se incluyen algunos de los conceptos principales de NiFi y su correspondencia con FBP:
NiFi Term | FBP Term | Description |
---|---|---|
FlowFile | Information Packet | A FlowFile represents each object moving through the system and for each one, NiFi keeps track of a map of key/value pair attribute strings and its associated content of zero or more bytes. |
FlowFile Processor | Black Box | Processors actually perform the work. In [eip] terms a processor is doing some combination of data Routing, Transformation, or Mediation between systems. Processors have access to attributes of a given FlowFile and its content stream. Processors can operate on zero or more FlowFiles in a given unit of work and either commit that work or rollback. |
Connection | Bounded Buffer | Connections provide the actual linkage between processors. These act as queues and allow various processes to interact at differing rates. These queues then can be prioritized dynamically and can have upper bounds on load, which enable back pressure. |
Flow Controller | Scheduler | The Flow Controller maintains the knowledge of how processes actually connect and manages the threads and allocations thereof which all processes use. The Flow Controller acts as the broker facilitating the exchange of FlowFiles between processors. |
Process Group | Subnet | A Process Group is a specific set of processes and their connections, which can receive data via input ports and send data out via output ports. In this manner process groups allow creation of entirely new components simply by composition of other components. |