Blog der SHI GmbH

Apache NiFi MiNiFi – Agenten für die Daten-Extraktion

Veröffentlicht am 30.08.2016 von Markus Klose

Apache NiFi MiNiFi. Hierbei handelt es sich nicht um einen Tippfehler, sondern um den Namen eines Unterprojektes von „Apache NiFi“, welches am 10.06.2016 in der Version 0.0.1 veröffentlicht worden ist. Mit Apache NiFi MiNiFi werden sogenannte Agenten für die Daten-Extraktion möglich. Agenten sind leichtgewichtige Programme mit der Aufgabe Daten aus den unterschiedlichsten Quellen zu lesen und weiterzuleiten.

Bisher hat Apache Nifi die Daten selber eingelesen. Hierfür bietet Apache NiFi bereits eine große Auswahl an Prozessoren, wie beispielsweise „GetFile“, „GetHTTP“ oder „GetSolr“. Jedoch ist Apache NiFi in der Anwendung bzw. bei den Einsatzmöglichkeiten beschränkt:

  • Systemvoraussetzungen – Die Hardware- bzw. Softwarevoraussetzungen an das System, auf dem Apache NiFi installiert wird, sind nicht gerade gering. Daher kann Apache nicht überall installiert werden.
  • Performance & Systemressourcen – Da Apache NiFi neben dem Einlesen auch die Verarbeitung bzw. Transformation der Daten übernimmt, werden die Systemressourcen aufgeteilt, was zu Verlusten bei der Performance führt.
  • Datenzugriff – Es gibt Datentypen, wie beispielsweise Log-Dateien, die müssen erst vom QuellSystem auf den Apache NiFi Server kopiert werden, bevor diese verarbeitet werden können. Bei anderen Zugriffsarten ist es wiederum notwendig, dass Apache NiFi die Zugangsdaten (Benutzer, Passwort etc.) kennt und dass ggf. Ports in der Firewall freigeschalten werden müssen. Dies bedeutet einen erhöhten Konfigurationsaufwand und ist gleichzeitig ein Sicherheitsrisiko.

Es war nur eine Frage der Zeit bis auch Apache NiFi einen Ansatz bietet um obige Nachteile auszugleichen. Vergleichbares gibt es auch bei ähnlichen Produkten, wie Logstash, Flume oder Splunk.

Was kann Apache NiFi MiNiFi in der Version 0.0.1

Die erste Version von Apache NiFi MiNiFi ist bereits in einer so frühen Version veröffentlicht worden, dass man nicht erwarten kann, dass die sämtliche Einschränkungen von Apache NiFi ausgeglichen werden können.

Grundlegend wurden die Funktionalitäten von Apache NiFi übernommen. Hauptaugenmerk lag hier bei den Prozessoren. Zusätzlich wurde in dieser Version vor allem abgespeckt, beispielsweise gibt es keine grafische Oberfläche. Im Vergleich mit der Apache NiFi Version 0.7, die entpackt ca. 600 MB Speicher auf der Festplatte benötigt, braucht Apache NiFi MiNiFi nur ca. 45 MB.

Die Version 0.0.1 von Apache NiFi MiNiFi kann auf dem System installiert werden, wo die Daten liegen. Dort kann es die Daten einlesen und an eine Apache NiFi Installation auf einem anderen Server schicken. Apache Nifi kann dann, wie gewohnt die Daten manipulieren und an das eigentliche Ziel, wie beispielsweise Apache Solr weiterleiten.

Dieses Setup vergrößert die Flexibilität bei der Skalierung. Es können nun weitere Agenten (Apache NiFi MiNiFi) installiert werden und ohne weitere Konfiguration des Apache NiFi Workflows werden diese zusätzlichen Daten verarbeitet.

Wie funktioniert‘s

Auf der Download-Seite von Apache NiFi MiNiFi können zwei unterschiedliche Pakete heruntergeladen werden. Zum einem gibt es dort die „MiNiFi Binaries“ und zum anderen die „MiNiFi Toolkit Binaries“.

Das Toolkit („MiNiFi Toolkit Binaries“) wird genutzt um NiFi Workflow Templates in MiNiFi Konfigurationsdateien zu überführen. Des Weiteren kann dieses Toolkit bestehende MiNiFi Konfigurationen validieren. In dem Hauptpaket („MiNiFi Binaries“) befindet sich die Laufzeitumgebung bzw. der Agent.

Aber so ganz „standalone“ funktioniert Apache NiFi MiNiFi nicht. Für manche Schritte wird Apache NiFi benötigt, beispielsweise um einen neuen Workflow für den Agent zu definieren. Grundlegend sind folgende Schritte notwendig um einen neuen Agenten zu deployen.

  1. Erstellen eines Workflows mit Apache NiFi
    Der erste Schritt ist die Erstellung eines Workflows, also eine Beschreibung der Schritte, was der Agent später zu tun hat. Hierfür wird Apache NiFi genutzt. Da man nur den XML Output benötigt kann man dies einfach mit einer lokalen Installation von Apache NiFi machen.
  2. Export des Workflow als XML
    Den Workflow, den man im ersten Schritt erstellt hat, muss man nun exportieren. Das exportierte XML Template dient als Basis für die Konfiguration des Agenten.
  3. Konvertierung der XML Beschreibung des Workflows in eine YML Konfigurationsdatei für Apache NiFi MiNiFi
    Mit Hilfe des Toolkits kann aus der exportiertem XML eine YML Datei erzeugt werden, die von Apache NiFi MiNiFi gelesen werden kann.
    Folgender Befehl transformiert die XML Datei:
    minifi-toolkit-0.0.1binconfig.bat transform log2solr.xml log2solr.yml
  4. Deploy von Apache NiFi MiNiFi mit der neuen Konfiguration
    Das einfachste ist die YML Datei als „config.yml“ im Verzeichnis „minifi-0.0.1conf“ abzulegen. Alternativ kann man auch in der bootstrap.conf die YML Datei konfigurieren.
    Nachdem die Konfigurationsdatei nun vorhanden ist, kann man Apache NiFi MiNiFi mit dem folgenden Befehl starten:
    minifi-0.0.1binrun-minifi.bat
  5. Deploy Apache NiFi mit einer einem Workflow zum Verarbeiten der FlowFlies, die von Apache NiFi MiNiFi generiert werden.
    Dieser Schritt ist optional und muss nur ein einziges Mal ausgeführt werden.

Zusammenfassung

Momentan ist Apache NiFi MiNiFi noch kein echter Agent für die Daten-Extraktion. Man kann all das, was man mit Apache NiFi MiNiFi machen kann, grundlegend auch mit Apache NiFi machen. ABER das Projekt ist ja noch jung und die Roadmap für die nächsten Releases ist klar:

  • Noch „leichtgewichtiger“ werden, um weniger Ressourcen zu brauchen
  • Weg von der Beschränkung, dass man JAVA benötigt. Nur so wird es möglich werden auf einer Vielzahl unterschiedlicher Plattformen zu laufen.
    Ich freu mich schon auf die kommenden Versionen von Apache NiFi MiNiFi.

Weiterführende Links

Markus Klose