Ce poste fait partie de notre série sur le Dataworks Summit 2017 (ex-Hadoop Summit)

Conférence d’Aldrin Piri d’Hortonworks

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).

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.