Retrouvez-nous le 14 mai au Google Cloud Summit à l'Accor Arena - Paris !

logo saagie red
illustration blog apache nifi

Apache Nifi : gérer les flux de données en toute simplicité

De nos jours, la quantité de données que les entreprises veulent traiter augmente constamment, ce qui implique l’adaptation et l’évolutivité des technologies, modélisations, infrastructures et architectures. Apache Nifi est une référence open source quand il s’agit de faire traverser des grandes quantités de données à travers différentes technos.

Qu'est-ce qu'Apache Nifi ?

Apache NiFi (basé sur « Niagara Files », d’où son nom) est une plateforme de logistique de données intégrées en temps réel capable de traiter et d’automatiser les mouvements entre données de différentes sources et systèmes divers, d’une manière rapide, simple et sûre, sans impact sur la performance du système.

C’est un système facile à utiliser, puissant et robuste pour traiter et distribuer les données. De façon schématique, NiFi sert à transférer des données d’un endroit à un autre, peu importe les technologies et architectures de l’un et l’autre.

NiFi dispose d’une interface web très puissante et intuitive qui permet de faire le design et de configurer visuellement les flux de données, de contrôler les étapes et de surveiller tout le processus pour chercher d’éventuelles erreurs.

De quels modules est-elle composée ?

NiFi s’organise autour de plusieurs modules :

  • Web Server : s’occupe du serveur web et du contrôle de l’API ;
  • Flow Controller : il s’agit du cerveau du processus. Il fournit les fils d’exécution et gère la planification de ressources ;
  • Extensions : il en existe une grande variété. Elles s’exécutent dans la VM de Java ;
  • FlowFile Repository : il analyse l’état de chaque fichier de flux et écrit constamment un registre sur une partition du disque spécifique ;
  • Content Repository : ici se trouvent les bytes du contenu d’un FlowFile déterminé ;
  • Provenance Repository : sert à sauvegarder toutes les données des événements du processus qui sont indexées pour des recherches ultérieures ;
  • Controller Service : les controller service s’utilisent pour partager une ressource entre différents processeurs, par exemple une connexion à une base de données ou à un conteneur Azure.
  • Apache NiFi vous permet également de créer des templates à partir d’un flux sauvegardé. Les templates sont très utiles quand il s’agit d’ajouter rapidement un nouvel ensemble de composants et de transférer des flux entre différents environnements de travail.

Une intégration parfaite dans l'écosystème data

Pour lire et enregistrer des données, Apache NiFi supporte une grande variété de technologies : HDFS, ElasticSearch, FTP, SQL, MongoDB, etc. C’est également le cas en ce qui concerne le format de données : JSON, XML, Avro, CSV… 

De même, il permet de collaborer avec d’autres systèmes comme Apache Kafka ou Flume. NiFi peut être exécuté en parallèle à ZooKeeper qui vous permettra d’avoir plusieurs instances de NiFi en même temps.

Le projet MiNifi et le cloud

Avec la quantité de nouveaux dispositifs et leur croissance, notamment dans un contexte Internet of Things (IoT), il y a le besoin de recueillir et transférer les données générées vers le cloud pour pouvoir les exploiter. Insérer et valider ces données suppose un grand défi dans lequel NiFi joue un rôle fondamental.

MiNiFi es un projet de NiFi pour dispositifs de ce type. Il agit comme un agent qui permet d’envoyer des données à un système NiFi et de réaliser des opérations simples à l’endroit même où les données sont générées. Il réalise une tâche complémentaire tout en restant très léger en ce qui concerne l’utilisation de ressources. Il existe des agents en C++ et Java, qui garantissent l’envoi de données et la gestion de queues et buffers.

Comment installer Nifi ?

Ouvrez votre navigateur et allez sur la page officielle d’Apache NiFi. Ensuite, cliquez sur « Téléchargements ». Vous aurez des links pour télécharger un .zip ou un .tar.

Une fois le téléchargement terminé, vous trouverez dans le dossier un sous-dossier nommé « bin ». Vous pouvez cliquer sur l’exécutable run-nifi pour démarrer le serveur.

Pour le visualiser dans le navigateur, tapez l’url « localhost:8080/nifi/ »

Par défaut, le port est 8080. Si vous voulez le changer, allez dans le dossier « conf » qui se trouve à la racine du dossier que vous avez téléchargé. Cliquez ensuite avec le bouton droit sur le fichier nommé « nifi.properties » et ouvrez-le avec un éditeur de texte.

Si vous voulez vous aider de Docker, vous pouvez aller sur le site de Docker Hub et télécharger l’image docker de NiFi. Une fois téléchargée, écrivez ceci sur le terminal :

Docker pull apache/nifi

 

Une fois installé, exécutez l’image avec :

Docker run — name nifi\ -p 8080:8080\-d \apache/nifi:latest

 

Ensuite, vous pouvez assigner un nom au conteneur, le port et indiquer le nom de l’image docker que vous avez installée précédemment.

Saagie & Apache Nifi

Saagie et Apache NiFi forment une synergie puissante dans le domaine de la gestion des flux de données. Alors que Saagie offre une plateforme DataOps complète pour l’orchestration des projets data, Apache NiFi est un puissant outil de gestion des flux de données en temps réel.

En intégrant Apache NiFi à la plateforme DataOps Saagie, les utilisateurs peuvent exploiter les fonctionnalités avancées d’Apache NiFi tout en bénéficiant des capacités d’orchestration et de gestion de projet de Saagie. Apache NiFi facilite la collecte, la transformation et le transfert des données en temps réel, tandis que Saagie offre un environnement cohérent pour gérer l’ensemble du cycle de vie des projets data.

L’intégration de ces deux technologies permet aux utilisateurs de créer des pipelines de données complexes et robustes, où Apache NiFi assure la collecte, la transformation et l’enrichissement des données, tandis que Saagie gère les aspects de déploiement, de surveillance et de gestion des ressources.

En conclusion, pourquoi utiliser Apache Nifi ?

NiFi, c’est la facilité dans la gestion et le transfert de données entre différents sources et systèmes. Il supporte beaucoup de formats et types de données, comme les données de géolocalisation, social feeds, JSON, XML, CSV, Avro, SQL, etc.

Il vous permet d’interagir avec plusieurs technologies comme HDFS, ElasticSearch, MongoDB ou encore Kafka. Vous aurez également l’occasion de développer vos propres modules en Java.