Apache NiFi est un projet open source de la fondation Apache, supporté par Hortonworks. Il permet d’injecter automatiquement des flux de données entre différents systèmes sources en direction d’autres systèmes en cible.
Par exemple, NiFi peut être très utile dans un cas d’usage comme l’alimentation d’un DataLake Hadoop à partir de plusieurs sources de données.
Basé sur le paradigme de programmation flow-based programming, NiFi fournit une interface web qui permet de construire un flux de données en Drag et Drog. Ainsi, il est possible de définir, de contrôler en temps réel, et d’une certaine manière, de sécuriser l’acheminement de données.
Apache NiFi assure l’intégralité du flux de données, il est tolérant aux pannes, est scalable et a été conçu pour gérer de gros volumes de données en temps réel.
Apache NiFi est compatible avec Kerberos qui assure l’authentification, avec Apache Ranger qui permet la sécurité des autorisations d’accès et avec Apache Knox qui gère la sécurité au niveau authentification et celle des appels REST and HTTP.
NiFi tourne dans une JVM en mode local sur le système d’exploitation hôte (Windows, Linux ou Mac) mais on peut aussi déployer Apache NiFi en mode cluster, un de ses grands atouts une fois en production.
Il est conseillé d’installer le cluster NiFi sur le FrameWork Hadoop, mais vous pouvez également configurer un cluster NiFi en dehors de Hadoop.
Sachez qu’en mode cluster, vous aurez besoin d’Apache Zookeeper pour la gestion de la configuration afin d’assurer la haute disponibilité des services.
Apache ZooKeeper élit un nœud unique en tant que coordinateur du cluster.
Tous les nœuds du cluster envoient un signal au coordinateur pour l’informer sur son état.
Le coordinateur de cluster est responsable de la déconnexion et de la connexion des nœuds. En quelque sorte, il joue le rôle du master sans en être réellement un.
En outre, chaque cluster possède un nœud principal, également élu par ZooKeeper.
Pour plus de détails sur le rôle de chaque nœud sur le cluster, je vous invite à lire la documentation NiFi System Administrator’s Guide.
Les composants principaux de NiFi sur la JVM sont les suivants :
En outre, NiFi possède plus de 200 connecteurs ou processeurs qui permettent de collecter en temps réel des données issues de plus de 80 sources : bases de données, messages, fichiers, flux Twitter, etc.
La richesse de la bibliothèque des processeurs permet de réaliser :