Apache Flume et Apache Nifi sont des outils d’Ingestion Continue de données. Flume a été initialement développé par Cloudera avant d’être reversé à la communauté Apache. Il porte maintenant l’appellation Flume NG (Next Génération) après une refonte profonde de son architecture. C’est un outil relativement simple faisant aujourd’hui parti de l’écosystème Hadoop.
Le fonctionnement de Flume est basé sur des Agents lesquels fonctionnent comme un service distribué pour assurer la collecte de données en temps réel, leur stockage temporaire et leur diffusion vers une cible.
Techniquement, un agent Flume permet de créer des routes pour relier une source à une cible via un canal d’échange.
La « source » Flume a pour pour but de récupérer les messages à partir de différentes sources, en particulier des fichiers de logs.
Le « canal » Flume est une zone tampon qui permet de stocker les messages avant qu’ils soient consommés. On utilise généralement un stockage en mémoire.
Le « sink » (ou la cible) Flume consomme par lot les messages en provenance du « canal » pour les écrire sur une destination comme HDFS par exemple.
Lorsque la vitesse d’intégration des nouveaux messages est plus rapide que celle d’écriture vers la cible, la taille du « canal » augmente afin de garantir qu’aucun message ne soit perdu.
Apache NiFi est un projet open source de la fondation Apache, supporté par Hortonworks (aujourd’hui Cloudera). 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.