Apache NiFi Flow Layout

Best Practices: Apache NiFi Flow Layout – Wie Sie Ihre Dataflows übersichtlicher gestalten können!

Apache NiFi ist ein mächtiges Tool zur flussbasierten Datenverarbeitung, doch manchmal können Dataflows in NiFi chaotisch und schwer verständlich werden. Das kann es mühsam machen …

  • … neue Teammitglieder einzuarbeiten.
  • … den Flow zu aktualisieren oder Instand zu halten.
  • … den Flow bei Problemen zu debuggen.

Doch keine Sorge, beachtet man ein paar Best Practices, kann man solche unübersichtlichen Flows leicht vermeiden. Auch bietet NiFis User Interface einige Tools, die bei der Umsetzung helfen können. Diese möchte ich Ihnen im folgenden Blogbeitrag gerne vorstellen.

Die Flussrichtung

Ein grundlegender Punkt ist die Flussrichtung der Daten. Zunächst ist es wichtig, eine einheitliche Richtung festzulegen, sodass die Daten nicht kreuz und quer über das Canvas geleitet werden. Ein Flow wie der unten abgebildete sollte also vermieden werden.

Diesen Punkt beachten viele bereits. Allerdings wird oftmals die Flussrichtung von links nach rechts gewählt – vermutlich, weil der Bildschirm breiter als hoch ist. Da aber auch die Prozessoren breiter als hoch sind und die Connections ebenfalls mehr Platz in die Breite benötigen, empfehlen wir dagegen die Flussrichtung von oben nach unten. Erfahrungsgemäß lässt sich so insgesamt mehr auf dem Bildschirm darstellen.

Zur Veranschaulichung, habe ich einen Flow bestehend aus drei Prozessoren auf dem Canvas so angeordnet, dass er genau auf meinen Bildschirm passt: einmal mit Flussrichtung links nach rechts und einmal von oben nach unten. Die Variante von links nach rechts sieht recht „gequetscht“ aus, denn die Queues überlappen mit den Prozessoren. Außerdem kommen einem hier unter Umständen die Navigate- und Operate-Paletten in die Quere, die sich am linken Rand des Canvas befinden.

Flussrichtung von links nach rechts

Die Variante von oben nach unten ist dagegen schön übersichtlich, nichts überlappt und die Flussrichtung ist deutlich sichtbar.

Flussrichtung von oben nach unten

Horizontale bzw. vertikale Ausrichtung

Sind die Prozessoren zwar alle in Flussrichtung von oben nach unten angeordnet, aber mal ein wenig nach links, mal ein wenig nach rechts versetzt, bringt dies viel Unruhe ins Flow Layout. Das lässt sich ganz einfach vermeiden, indem man alle in einer Linie auszurichtenden Komponenten markiert, durch einen Rechtsklick das Kontextmenü öffnet und den Punkt „Align“ > „Horizontally“ bzw. „Align“ > „Vertically“ wählt.

nicht ausgerichteter Flow
Vertikal ausgerichteter Flow

Derselbe Flow einmal nicht ausgerichtet und einmal vertikal ausgerichtet.

Abzweigungen als parallel verlaufende Nebenzweige

Oftmals fließen die Daten in einem NiFi Flow nicht allesamt entlang derselben Route, sondern nehmen Abzweigungen. Hier ist es meist am übersichtlichsten, wenn die „Hauptroute“ gerade nach unten verläuft und die Nebenroute rechts oder links parallel daneben verläuft, etwa wie in dem folgenden Screenshot.

Daten im Nebenzweig

Hier habe ich ein paar Dinge beachtet:

  • Die zwei Zweige sind in sich vertikal ausgerichtet und befolgen jeweils die Flussrichtung von oben nach unten.
  • Die Prozessoren von Haupt- und Nebenzweig befinden sich auf derselben Höhe (z.B. durch horizontale Ausrichtung).
  • Bei der Connection vom Haupt- zum Nebenzweig (A) habe ich einen sogenannten Bendpoint genutzt. Mit diesen kann man Connections abknicken und so in eine passendere Form bringen. Mehr dazu gleich.

Bendpoints

Connections werden standardmäßig als Gerade zwischen zwei Prozessoren angelegt. Manchmal kann es jedoch praktisch sein, sogenannte Bendpoints einzufügen und die Connection dadurch in eine andere Form zu bringen, wie etwa im vorangegangenen Beispiel.

Einen Bendpoint hinzuzufügen ist ganz einfach. Durch Doppelklick auf eine Connection-Linie wird ein Bendpoint erzeugt (visualisiert durch ein kleines gelbes Viereck). Mittels Drag-and-Drop kann man den Bendpoint verschieben und so die Connection in die gewünschte Form bringen.

Wen man möchte, kann man mehrere Bendpoints pro Connection erzeugen oder durch Doppelklick auf einen Bendpoint diesen wieder löschen.

Wie Sie Bendpoints erzeugen, verschieben und löschen sehen Sie auch im folgenden Video.

Aussagekräftige Prozessornamen

Um das Verständnis eines Flows zu erleichtern, sind sprechende Prozessornamen unverzichtbar. Standardmäßig sind die Prozessoren nach ihrem Prozessortyp benannt, können aber im Konfigurationsmenü umbenannt werden. Wählt man passende Namen für die einzelnen Prozessoren, wird der „mystische“ Flow von oben gleich viel verständlicher, ohne dass man sich erst lange durch die Prozessorenkonfigurationen klicken muss, um den jeweiligen Zweck zu erkennen.

Um das Verständnis eines Flows zu erleichtern, sind sprechende Prozessornamen unverzichtbar. Standardmäßig sind die Prozessoren nach ihrem Prozessortyp benannt, können aber im Konfigurationsmenü umbenannt werden. Wählt man passende Namen für die einzelnen Prozessoren, wird der „mystische“ Flow von oben gleich viel verständlicher, ohne dass man sich erst lange durch die Prozessorenkonfigurationen klicken muss, um den jeweiligen Zweck zu erkennen.

Prozessor-Kommentare

Nicht immer, aber manchmal bietet es sich an, einem Prozessor eine Erklärung hinzuzufügen, die über den reinen Namen hinausgeht. Hier sind Kommentare nützlich, die sich über das Konfigurationsmenü erstellen lassen.

Dass ein Prozessor einen Kommentar enthält, erkennt man an einem kleinen schwarzen Dreieck in der rechten unteren Ecke. Hovert man mit dem Mauszeiger darüber, wird der Kommentar angezeigt. Im folgenden Video sehen Sie das in Aktion.

Weitere Tipps

Abschließend habe ich noch ein paar weitere Tipps für Sie gesammelt:

  • Färben von Prozessoren: Das geht über einen Rechtsklick auf den Prozessor und Wahl der Option „Change Color“. Wenn man dies nutzt, sollte man sich allerdings an den Grundsatz „weniger ist mehr“ halten und nach einem festen Konzept vorgehen.
  • Nutzung von Labels: Labels dienen im Prinzip als Notizzettel oder kleine Hinweisschilder. Man findet sie in der Toolbar und kann sie von dort über Drag-and-Drop aufs Canvas ziehen. Hintergrundfarbe und Schriftgröße lassen sich anpassen. Auch hier gilt es, nicht zu viele Labels zu nutzen. Für ausführliche Kommentare ergibt es oft mehr Sinn, die Kommentarfunktion in den Prozessoren zu nutzen, statt das Canvas mit Labeln zu überfüllen.
  • Last but not Least: Prozessorgruppen sind gerade bei großen und unübersichtlichen Workflows unverzichtbar, um diese in etwas „verdaulichere Häppchen“ zu unterteilen.

Ich hoffe, ich konnte Ihnen mit diesem Blogbeitrag helfen, mehr Ordnung und Übersicht in das Chaos eines manchen NiFi Flows zu bringen! Zögern Sie nicht, auf uns zuzukommen, sollten Sie noch Fragen haben.

Sie möchten mehr zu Apache NiFi erfahren oder benötigen Unterstützung?
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