Apache Nifi

Apache NiFi est un logiciel libre de gestion de flux de données, il permet d’automatiser la gestion des flux de données entre plusieurs systèmes distribués ou non. Il permet aussi de facilement transformer à la volée les données pour les faire passer d’un système à un autre. NiFi donne accès à une interface graphique facilement utilisable permettant du configurer ses flux avec du drag and drop par exemple. NiFi est conçu pour consommer le moins de ressources possibles du système hôte, en particulier au niveau du CPU et du disque.

https://nifi.apache.org

https://community.hortonworks.com/articles/46258/iot-example-in-apache-nifi-consuming-and-producing.html

=NiFi Architecture=

NiFi s’exécute sur une JVM sur une machine hôte. Les composants primaires de NiFi sont :

Web server :
Il héberge les commandes HTTP de NiFi et permet de contrôler l’API

Flow Controller
Le contrôleur de flux est le chef d’orchestre, c’est lui qui alloue les threads pour exécuter les extensions et il contrôle l’ordre d’exécution des ressources reçues par les extensions.

Extensions
Il y beaucoup d’extension possible à NiFi. Les extensions s’exécutent à l’intérieur de la JVM.

FlowFile Repository
Une FlowFile représente chaque objet transitant par le système. Pour chaque objet NiFi trace les évènements liés à l’objet. Le FlowFile Repository est l’endroit où NiFi garde en mémoire l’état de chaque FlowFile.

Content Repository
Le Content Repository est l’endroit où se trouve les données d’un FlowFile. Le système par défaut stock les données sur le système de fichier, cependant on peut spécifier plusieurs lieux de stockage pour réduire la charge sur un seul volume.

Provenance Repository
Le Provenance Repository est l’endroit où sont stockés toutes les données reçues. Par défaut on peut utiliser un plusieurs disques. Chaque évènement de stockage est indexé et peut être facilement recherché.

=Déploiement avec Docker=

docker run -d -p 8080:8080 -p 8081:8081 -p 8443:8443 xemuliam/nifi docker-machine ls

Browse http://localhost:8080/nifi