NiFi-Variablen - mehr als nur Bequemlichkeit

Apache NiFi-Templates – Dataflow-„Recycling“ leicht gemacht

Wer erleichtert sich nicht gerne das Leben und nutzt getane Arbeit, wenn möglich mehrmals? Die gute Nachricht für alle „faulen“ (oder eigentlich „schlauen“) Apache-NiFi-Nutzer: Das Konzept der sogenannten Templates ermöglicht eben das. Templates erleichtern die Wiederverwendung und Verteilung von NiFi-Flows erheblich. Auch helfen sie NiFi-Entwicklern, ihre Arbeit in Repositories wie GitHub zu teilen.

Was sind NiFi-Templates und wozu braucht man sie?

Stellen wir uns die folgenden Szenarien vor:

  1. In unserem Dataflow muss an verschiedenen Stellen die mehr oder weniger gleiche Aufgabe erfüllt werden. Dieselben Prozessoren immer wieder aufs Neue zusammenzubauen ist mühsam, ineffizient und fehleranfällig.
  2. Für unser neues NiFi-Projekt müssen wir eine bestimmte Aufgabe erfüllen, die wir schon bei einer anderen NiFi-Installation umgesetzt haben. Wie im ersten Szenario möchten wir ein manuelles Nachbauen vermeiden.
  3. Wir haben einen tollen Dataflow erstellt und wollen diesen gerne für uns ablegen. Außerdem möchten wir, dass auch unsere Kollegen oder sogar die ganze Welt von unserem Dataflow profitieren können und würden ihn deswegen gerne per Mail oder über GitHub teilen.

Als Lösung für all diese Probleme bieten sich NiFi-Templates an. Ein Template kann man sich als wiederverwendbaren Teilflow in Form einer XML-Datei vorstellen.

Wie ist ein NiFi-Template aufgebaut?

Ein NiFi-Template ist eine XML-Datei und enthält alle Informationen über einen NiFi-Teilflow. Diese Informationen werden dazu benötigt, um den Teilflow „nachzubauen“. Dazu zählen z. B. für jeden enthaltenen Prozessor die folgenden Infos:

  • der Typ des Prozessors
  • die Position des Prozessors
  • die Konfiguration sämtlicher Einstellungen
  • der Zustand: „RUNNING“, „STOPPED“ etc.
  • etwaige Verbindungen zu anderen Prozessoren

Auch enthält ein NiFi-Template Metadaten, wie der Name des Templates, seine Beschreibung und das Datum der Erstellung. Sensible Daten wie Passwörter enthält ein Template dagegen nicht.

Zur Veranschaulichung ist im Folgenden ein Beispiel-Template eingefügt. Hierbei handelt es sich um kein valides Template. Aus Gründen der Übersichtlichkeit ist das tatsächliche Template hier etwas gekürzt dargestellt, denn selbst ein Template, das nur aus einem einzigen Prozessor besteht, wird schnell über 100 Zeilen lang.

Apache NiFi Beispiel-Template

Wie erstellt man ein NiFi-Template?

Theorie schön und gut, aber wie arbeitet man denn nun mit solchen Templates? Das geht ganz einfach über die UI. Um zunächst ein Template zu erstellen, folgen wir diesen Schritten:

  1. Wir wählen alle Komponenten aus, die in dem Template enthalten sein sollen. Nicht zu vergessen sind dabei die Connections zwischen den Prozessoren, etwaige wichtige Labels oder Ähnliches. Am einfachsten ist es, ein Template aus einer ganzen Prozessgruppe zu erstellen. So muss nur ein Objekt markiert werden und nichts wird vergessen.
  2. Durch einen Rechtsklick öffnen wir das Kontext-Menü und wählen „Create Template“.
  3. Wir vergeben einen Namen und wenn gewünscht eine Beschreibung für das Template.
  4. Mit „CREATE“ wird das Template bestätigt. Anschließend sollte eine Erfolgsmeldung erscheinen.

Damit haben wir ein Template erstellt. Sehen wir uns als Nächstes an, was wir nun damit anfangen können.

Wie kann ich meine NiFi-Templates einsehen und herunterladen?

Eine Übersicht aller verfügbaren Templates – in unserem Fall nur die eben erstellten Templates – finden wir unter dem Punkt „Templates“ im Menü oben rechts.

Übersicht aller verfügbaren NiFi-Templates

Die Ansicht, die wir erhalten, sieht dann aus wie unten abgebildet. Für jedes Template gibt es neben ein paar Informationen zusätzlich noch zwei mögliche Aktionen, die getätigt werden können (im Screenshot gelb markiert):

  • Ein Klick auf das linke Icon bewirkt einen Download des Templates.
  • Mit dem rechten Mülleimer-Icon kann das Template gelöscht werden.
NiFi-Templates

Führen wir den Download aus, so kann das heruntergeladene Template jetzt verwendet werden, um den erstellten Flow z. B. via GitHub zu teilen. Auch kann es in einer anderen NiFi‑Installation importiert werden.

Wie kann ich NiFi-Templates importieren?

Um einen NiFi-Flow in eine andere NiFi-Installation zu migrieren, müssen wir zunächst in der Quell-NiFi-Installation ein Template erstellen und herunterladen. Das so erstellte Template wird dann in die Ziel-NiFi-Installation importiert, um sie dort anschließend nutzen zu können. Wie der erste Schritt funktioniert, haben wir bereits gesehen. Für das Importieren führen wir folgende Schritte aus:

  1. Nach einem Rechtsklick auf einen freien Bereich auf dem Canvas wählen wir im erscheinenden Menü „Upload template“. Alternativ gibt es diese Option auch in der „Operate“-Palette.
  2. Wir klicken auf das Lupensymbol und navigieren zur gewünschten Template-Datei.
  3. Mit „UPLOAD“ bestätigen wir. Eine Erfolgsmeldung sollte erscheinen.

Verifizieren kann man den Upload, indem man sich wie oben beschrieben unter dem Menüpunkt „Templates“ die Übersicht aller verfügbaren NiFi-Templates anzeigen lässt. Hier sollten alle hochgeladenen Templates zusammen mit den selbst erstellten erscheinen.

Wie kann ich einen Flow basierend auf einem NiFi-Template erstellen?

Zum Schluss der vielleicht wichtigste Teil: Wie kann ich ein NiFi-Template nutzen, um mit ein paar Klicks den darin gespeicherten Teilflow wiederzuverwenden? Wir folgen dazu diesen Schritten:

  1. Wir klicken auf das zweite Symbol von rechts in der Toolbar (siehe unten stehenden Screenshot)
  2. Per Drag&Drop ziehen wir das Symbol auf das NiFi-Canvas.
  3. Unter „Choose Template“ wählen wir das gewünschte Template aus. Im Drop-Down stehen alle Templates zur Verfügung, die wir entweder in derselben NiFi-Installation erstellt oder die wir importiert haben.
  4. Mit „ADD“ bestätigen wir. Eine Erfolgsmeldung sollte erscheinen und der in dem Template gespeicherte NiFi-Teilflow auf dem Canvas hinzugefügt werden.
Apache NiFi Toolbar

Was können NiFi-Templates nicht?

In diesen Blogbeitrag haben wir gesehen, dass NiFi-Templates viel Power haben: Sie erleichtern die Wiederverwendung und Verteilung von NiFi-Flows und ermöglichen es uns, unsere Arbeit mit anderen zu teilen. Wofür sie jedoch nur bedingt geeignet sind, ist die Versionsverwaltung. Hier wird man in der Praxis auf einige Unannehmlichkeiten stoßen. Wer auf der Suche nach einer Lösung zur Versionskontrolle ist, dem empfehle ich daher das Apache NiFi Subprojekt NiFi Registry. 

Sie haben weitere Fragen zum Einsatz von NiFi-Templates?
Sie benötigen Programmierarbeiten im Bereich Apache NiFi, bei denen NiFi-Templates zum Einsatz kommen sollen?
Bianca Schlüter

Bianca Schlüter

...geboren 1994 in Augsburg, studierte Mathematik an der Universität Augsburg mit den Schwerpunkten Statistik und Optimierung. Seit 2020 arbeitet sie als Consultant Search and Analytics bei der SHI. Lieblingsdateiformat: JSON