MiNiFi : Scalabilité de la donnée & de l'intérêt de commencer petit
8 juil. 2017
Ne ratez pas nos articles sur l'open source, le big data et les systèmes distribués, fréquence faible d’un email tous les deux mois.
Aldrin nous a rapidement présenté Apache NiFi puis expliqué d’où est venu MiNiFi : un agent NiFi à déployer sur un embarqué afin d’amener la donnée à pipeline d’un cluster NiFi (ex : IoT).
Ce poste fait partie de notre série sur le Dataworks Summit 2017 (ex-Hadoop Summit) et fait suite à la conférence d’Aldrin Piri d’Hortonworks. Voici les points principaux de la présentation.
Apache NiFi
Apache NiFi est un système répondant à la question suivante :
Dans un monde connecté ou tout appareil peut être producteur de données, comment amène-t-on la donnée au consommateur ?
Il permet de collecter la donnée depuis de multiples sources, y appliquer une ou plusieurs logiques et opérations et enfin de la rendre disponible à d’autres ou la pousser dans un système de fichiers.
Ses fonctionnalités clé sont :
- Assurance de livraison (guaranteed delivery)
- Mise en mémoire tampon
- Priorisation des files
- Qualité de service spécifique à un flux (latence vs débit, tolérance à la perte)
- Provenance de la donnée
- Reprise / enregistrement d’un log continu avec un historique détaillé
- Commandes et contrôles visuels
- Templates de flux
- Sécurité multi-rôle / pluggable
- Pensé pour les extensions
- Clustering
NiFi utilise le format FlowFiles pour transporter la donnée. C’est un format stockant la donnée au format binaire associé à des métadonnées, comme le fait HTTP, permettant de retracer l’origine du fichier et les opérations appliquées.
Le format FlowFile permet à NiFi d’être agnostique à la donnée, cependant le système est pensé pour l’intégration de plugins pour ajouter des opérations spécifiques à un format de données.
Apache MiNiFi
NiFi est un bel outil. Néanmoins il requiert beaucoup de puissance de calcul pour fonctionner ce qui le limite généralement aux DataCenters. Cela signifie que l’historique de la donnée au sein de NiFi est limité aux points d’entrée du DataCenter.
Avec ce point en tête, l’équipe NiFi a exporté les librairies de format FlowFile, support de tagging, protocole site-to-site et enregistrement de la provenance de la donnée, sans le framework de traitement, le serveur web et l’interface utilisateur. Associé à cela, ils ont développé deux clients :
- Un en Java, bien moins consommateur que le service NiFi original
- Un en C++, plus petit que la version Java
La première implémentation est basée sur le service NiFi original tandis que la version C++ est une réécriture complète pour optimiser les performances, et est bien adaptée à un réseau de capteurs.
Il reste enfin l’option la plus optimale : développer soi-même un client spécifique à la plateforme cible (iOS / Android, …) avec les librairies exportées de NiFi.
Tout cela forme MiNiFi, un client NiFi embarqué permettant d’avoir la provenance de la donnée directement depuis le producteur.
L’écosystème NiFi
Afin d’agrandir les possibilités de Nifi, les composants suivants sont en développement :
- Gestion de configuration des flux et versionning
- Dépôt centralisé d’extension
- Base de registre
Conclusion
Avec l’annonce de MiNiFi, l’équipe Apache NiFi veut se placer comme le meilleur ETL pour le nouveau monde de l’IoT.