Monitoring Nifi via streaming de bulletin dans Hive 3

Par - Publié le Modifié le

Contexte

Dans le cadre du suivi de production et le monitoring Nifi, je vais vous présenter un moyen que nous utilisons pour sauvegarder l’ensemble des évènements « bulletin » au sein d’un cluster Nifi.
Après avoir évoqué les enjeux, je vous présenterai l’implémentation technique ainsi qu’une alternative avec Impala.

Composants utilisés

Enjeux

Je me suis basé sur un article de Pierre VILLARD pour développer ce cas d’usage. Le monitoring Nifi est un enjeu important, mais les ressources sur la toile permettant de se faire un avis sur le sujet sont rares. J’apporte donc un peu de notre expérience dans le domaine, en passant en revue notre pipeline d’ingestion de bulletin Nifi, dans Hive 3.

Le système de bulletins Nifi est très riche en information mais reste volatile sans configuration spécifique. Pour permettre un stockage de ces données et une analyse, il est possible via un ControllerSetting d’envoyer ces fameux bulletins à un point d’entré Nifi. La récupération se fait simplement car chaque bulletin est récupéré en tant que flowfile.

Le monitoring Nifi concrètement

Pour commencer, il faut créer un Input Port au niveau 0 du plan Nifi. Puis dans le Controller Setting, créer une SiteToSiteBulletinReportingTask en spécifiant l’Input Port :

 

Monitoring nifi SiteToSiteBulletinReportingTask
ReportingTask Nifi

Ensuite j’ai créé un processGroup qui contient l’ensemble de mon cas d’usage (plus simple pour le versionning) :

InputPort
InputPort vers ProcessGroup Nifi

Et voici la pipeline d’enregistrement :

Monitoring Nifi complete pipeline
Pipeline complète d’enregistrement

Penchons-nous en détail sur ce workflow :

  1. Conversion des records transmis par notre tâche de monitoring : transformation de JSON à Avro. Pourquoi ? Car la table Hive 3 alimentée par le PutHive3Streaming, ne marche qu’avec des records en Arvo (le schéma est nécessaire).
  2. Enregistrement des records Avro dans une table Hive

    Monitoring Nifi PutHive3Streaming
    Configuration du PutHive3Streaming Nifi
  3. LogAttribute afin de sauvegarder d’éventuelle erreurs d’insertion dans Hive

 

Il est important de noter que la partie Hive n’est pas une simple table. Il est nécessaire d’avoir une table au format ORC ainsi que certains paramètres Hive pour streamer des données dans une table Hive :

Create table
Requête de création de table Hive

Je vous renvoie à un article sur la partie Hive 3 Streaming et les transactions ACID.

Alternative Impala

Si pour certaines raisons, streamer les données en temps réel dans Hive 3 n’est pas possible, voici le même workflow de monitoring Nifi pour insérer les données dans une table Impala

Monitoring Nifi Impala Workflow
Workflow équivalent vers Impala

Cette approche est encore plus simple car elle ne nécessite pas de conversion spécifique. L’utilisation d’un DBCPConnectionPool branché sur Impala via un PutDatabaseRecord fait très bien le travail.

Pour plus de détail sur la configuration de ce DBCPConnectionPool, je vous renvoie à notre premier cas d’usage Nifi.

Conclusion

Ce workflow bien que simple, met en exergue une problématique souvent rencontrée : le suivis des évènements Nifi au sein d’un ou plusieurs clusters.

Le streaming dans Hive 3 peut être intéressant dans certains cas. Il est possible via Nifi de pousser ces bulletins dans quasiment n’importe quelle destination (MongoDB, ElasticSearch, SolR, Kudu, S3, etc…) On peut même imaginer des traitements spécifiques ou des filtrages sur la provenance du bulletin. Nifi possède plusieurs autres métriques de reporting, sur lesquelles on peut facilement transposer ce système : AzureLogAnalyticsProvenanceReportingTask, ControllerStatusReportingTask, MetricsReportingTask ou encore PrometheusReportingTask

Si vous avez des questions ou souhaitez des précisions sur ce workflow, n’hésitez pas à me contacter !

Cet article vous a plu ?

Inscrivez-vous à notre newsletter pour être alerté de nos prochaines news !



Partager l'actualité sur

KEEP CALM & DataOps now

Page Linkedin Cyrès

Facebook

Twitter

06/16/2021 @ 5:30
#MS365 Entreprise a transformé les habitudes de travail.
⚠️ Ce que l’on sait moins, c’est que la sauvegarde de vos données ne fait pas partie de l’offre... 😳
Veeam Backup pour Microsoft 365, vous permet d'y remédier !
Besoin d'élaborer une stratégie ? > https://t.co/gN24jQ67QM https://t.co/7E8mOrYZ6I
cyresgroupe photo
06/10/2021 @ 4:50
Encore un très beau jalon franchi pour Cyrès dans son partenariat avec @Gitlab
En effet, c’est avec beaucoup de fierté que nous devenons officiellement GitLab Certified Professional Services Provider ⭐⭐⭐
Vous êtes de plus en plus nombreux à nous faire confiance :) #DevSecOps https://t.co/efVJaDdPuF
cyresgroupe photo