Suchen

Definition Was ist Luigi?

Autor / Redakteur: Dipl.-Ing. (FH) Stefan Luber / Nico Litzel

Luigi ist der Name eines Software-Pakets und -Tools für die Programmiersprache Python. Mit Luigi lassen sich Workflows verwalten, die aus aufeinander folgenden Aufgaben bestehen. Die Aufgaben sind in Pipelines miteinander verknüpft. Luigi bildet die Abhängigkeiten der Jobs ab, führt das Fehler-Handling durch und visualisiert Pipelines mithilfe einer grafischen Web-Oberfläche.

Firmen zum Thema

(Bild: © aga7ta - stock.adobe.com)

Luigi ist ein unter Apache-2.0-Lizenz stehendes, frei verfügbares Software-Paket und -Tool für die Programmiersprache Python. Es ist für das Workflow-Management vorgesehen und wurde ursprünglich von Spotify entwickelt.

Mit Luigi lassen sich komplexe Pipelines erstellen und verwalten, die aus vielen einzelnen Batch-Jobs bestehen. Luigi managt die Abhängigkeiten der Jobs und sorgt für das Fehler-Handling. Der Name der Software leitet sich vom bekannten Nintendo-Spielfigurnamen Luigi, dem jüngeren Zwillingsbruder von Mario, ab. Luigi ist Installateur beziehungsweise Klempner. Der Name soll das handwerkliche Zusammenstellen der Batch-Pipelines als eine Art von System aus einzelnen Rohrleitungen symbolisieren.

Luigi lässt sich über das Paketverwaltungsprogramm für Python-Pakete PIP installieren. Neben dem Erstellen der Pipelines aus untereinander abhängigen Jobs und der Fehlerbehandlung ermöglicht Luigi die Überwachung und die Visualisierung der Workflows. Die Art der einzelnen Jobs kann sehr unterschiedlich sein. Sowohl einfache über die Command Line erstellte Batch-Jobs als auch komplexe Hadoop-Jobs oder Machine-Learning-Algorithmen lassen sich in die Pipelines aufnehmen. Die Ausführung und die Steuerung der Workflows ist sowohl kommandozeilenorientiert als auch über ein grafisches Web-Benutzerinterface möglich. Luigi arbeitet vollständig in Python und eignet sich bestens für das Big-Data-Umfeld. Unter anderem werden Hadoop, Pig und Hive unterstützt. Neben Spotify setzen weltweit zahlreiche weitere Firmen Luigi ein. Das aktuellste Release ist Luigi Version 3.0.2 (Stand September 2020).

Luigi als Tool für das Flow-basierte Programmieren

Luigi ist eine Software und ein Tool für das sogenannte Flow-basierte Programmieren (Flow-based Programming – FBP). Unter Flow-basiertem Programmieren versteht man ein Programmierkonzept, das Anwendungen als ein Netzwerk aus Einzelelementen sieht, die ihre Daten über definierte Verbindungen austauschen. Ausgehend vom Input entsteht ein kontinuierlicher Datenstrom, bis die Anwendung den gewünschten Output liefert. Die Einzelelemente verändern abhängig von Parametern und Eigenschaften die Daten und beeinflussen den Datenstrom. Luigi bildet Datenströme über Pipelines bestehend aus einzelnen Jobs ab.

Das Grundkonzept von Luigi

Das Konzept von Luigi basiert auf den beiden Grundelementen Targets und Tasks. Targets sind Dateien oder Informationselemente in einem Speicher, in einer Datenbank oder in einem Filesystem wie dem HDFS (Hadoop Distributed Filesystem). Es gibt viele verschiedene Arten von Targets wie das LocalTarget oder das RemoteTarget. Weitere Targets sind beispielsweise das HiveTableTarget oder das HivePartitionTarget von Apache Hive und das ElasticSearchTarget von Elasticsearch.

Die Tasks führen die eigentliche Datenverarbeitung aus. Sie beziehen Daten aus einem Target, verarbeiten die Daten in der programmierten Form und geben das Ergebnis als neues Target aus. Die Tasks einer Pipeline haben untereinander Abhängigkeiten, die Luigi in der Abarbeitung einer Pipeline berücksichtigt. Die Pipeline besteht aus einer Aneinanderreihung einzelner Tasks, die Luigi entsprechend der Abhängigkeiten ausführt bis der letzte Task erledigt ist. Die drei zentralen Methoden eines Tasks sind requires(), run() und output().

Das Luigi-Web-Interface

Die Luigi-Software verfügt über ein grafisches Web-Interface. Mit diesem lassen sich die Workflows visualisieren, die aus den einzelnen Tasks bestehen. Das Web-Interface zeigt einen Graphen mit den Abhängigkeiten des Workflows inklusive Status der auszuführenden Tasks. Über eine farbliche Darstellung ist der aktuelle Status ersichtlich. Grün bedeutet beispielsweise, dass ein Task bereits ausgeführt wurde. Ein gerader laufender Task wird gelb dargestellt.

Luigi im Big-Data-Umfeld

Luigi wird sehr gerne im Big-Data-Umfeld eingesetzt. Mit der Software lassen sich beliebig komplexe Datenpipelines erstellen. Die Einbindung gängiger Big-Data-Lösungen ist über eine Vielzahl verfügbarer Module möglich. Unterschiedliche Softwarelösungen für Datenanalysen oder maschinelles Lernen lassen sich in das Luigi-Workflow-Management integrieren. Datenwissenschaftler und Datenanalysten können mit Luigi beispielsweise Hadoop, Pig, Hive, Spark oder TensorFlow für ihre Workflows nutzen und mit unterschiedlicher Software ausgeführte Jobs über komplexe Abhängigkeiten miteinander verknüpfen.

Vorteile durch Luigi

Der Einsatz von Luigi bietet für das Management von Workflows eine ganze Reihe Vorteile wie:

  • Luigi ist als Open-Source-Software unter Apache-2.0-Lizenz frei verfügbar und für kommerzielle, wissenschaftliche oder private Zwecke einsetzbar
  • Luigi ermöglicht die Erstellung komplexer Workflows, bildet die Abhängigkeiten der einzelnen Jobs ab, managt die Workflows und führt die Fehlerbehandlung durch
  • ein grafisches Web-Interface sorgt für die Visualisierung der Workflows, ihrer Abhängigkeiten und ihres Status
  • der Hadoop-Support ist direkt integriert
  • über Module ist die Einbindung gängiger Big-Data-Lösungen und -Software möglich
  • Luigi ist in die Python-Welt integriert und bietet vollen Python-Funktionsumfang

(ID:46983020)

Über den Autor