Luigi ist ein Python-Paket (3.7, 3.8, 3.9, 3.10, 3.11, 3.12 getestet), das Ihnen beim Aufbau komplexer Pipelines von Batch-Jobs hilft. Es kümmert sich um die Auflösung von Abhängigkeiten, das Workflow-Management, die Visualisierung, die Fehlerbehandlung, die Befehlszeilenintegration und vieles mehr.
Führen Sie pip install luigi
aus, um die neueste stabile Version von PyPI zu installieren. Die Dokumentation für die neueste Version wird auf readthedocs gehostet.
Führen Sie pip install luigi[toml]
aus, um Luigi mit TOML-basierter Konfigurationsunterstützung zu installieren.
Für den neuesten Code pip install git+https://github.com/spotify/luigi.git
. Eine hochmoderne Dokumentation ist ebenfalls verfügbar.
Der Zweck von Luigi besteht darin, alle Probleme zu lösen, die typischerweise mit lang andauernden Batch-Prozessen einhergehen. Wenn Sie viele Aufgaben verketten und automatisieren möchten, kann es zu Fehlern kommen. Bei diesen Aufgaben kann es sich um alles Mögliche handeln, in der Regel handelt es sich jedoch um langwierige Aufgaben wie Hadoop-Jobs, das Sichern von Daten in/aus Datenbanken, das Ausführen von Algorithmen für maschinelles Lernen oder irgendetwas anderes.
Es gibt andere Softwarepakete, die sich auf untergeordnete Aspekte der Datenverarbeitung konzentrieren, wie Hive, Pig oder Cascading. Luigi ist kein Rahmen, um diese zu ersetzen. Stattdessen hilft es Ihnen, viele Aufgaben zusammenzufügen, wobei jede Aufgabe eine Hive-Abfrage, ein Hadoop-Job in Java, ein Spark-Job in Scala oder Python, ein Python-Snippet, ein Dump einer Tabelle aus einer Datenbank oder etwas anderes sein kann. Es ist einfach, langwierige Pipelines aufzubauen, die Tausende von Aufgaben umfassen und deren Erledigung Tage oder Wochen in Anspruch nimmt. Luigi kümmert sich um einen Großteil des Workflow-Managements, sodass Sie sich auf die Aufgaben selbst und ihre Abhängigkeiten konzentrieren können.
Sie können so ziemlich jede Aufgabe erstellen, die Sie möchten, aber Luigi verfügt auch über eine Toolbox mit mehreren gängigen Aufgabenvorlagen, die Sie verwenden können. Es umfasst Unterstützung für die Ausführung von Python-Mapreduce-Jobs in Hadoop sowie für Hive- und Pig-Jobs. Es enthält außerdem Dateisystemabstraktionen für HDFS und lokale Dateien, die sicherstellen, dass alle Dateisystemvorgänge atomar sind. Dies ist wichtig, da Ihre Datenpipeline dadurch nicht abstürzt, wenn sie Teildaten enthält.
Der Luigi-Server verfügt außerdem über eine Weboberfläche, sodass Sie alle Ihre Aufgaben durchsuchen und filtern können.
Um Ihnen eine Vorstellung davon zu geben, was Luigi macht, ist dies ein Screenshot von etwas, das wir in der Produktion ausführen. Mit Luigis Visualizer erhalten wir einen schönen visuellen Überblick über das Abhängigkeitsdiagramm des Workflows. Jeder Knoten stellt eine Aufgabe dar, die ausgeführt werden muss. Grüne Aufgaben sind bereits abgeschlossen, während gelbe Aufgaben noch ausgeführt werden müssen. Die meisten dieser Aufgaben sind Hadoop-Jobs, aber es gibt auch einige Dinge, die lokal ausgeführt werden und Datendateien aufbauen.
Vom Konzept her ähnelt Luigi GNU Make, wo Sie bestimmte Aufgaben haben und diese Aufgaben wiederum Abhängigkeiten von anderen Aufgaben haben können. Es gibt auch einige Ähnlichkeiten zu Oozie und Askaban. Ein wesentlicher Unterschied besteht darin, dass Luigi nicht nur speziell für Hadoop entwickelt wurde und sich problemlos um andere Arten von Aufgaben erweitern lässt.
Alles in Luigi ist in Python. Anstelle einer XML-Konfiguration oder ähnlicher externer Datendateien wird das Abhängigkeitsdiagramm in Python angegeben. Dies erleichtert die Erstellung komplexer Abhängigkeitsdiagramme von Aufgaben, bei denen die Abhängigkeiten Datumsalgebra oder rekursive Verweise auf andere Versionen derselben Aufgabe umfassen können. Der Workflow kann jedoch Dinge auslösen, die nicht in Python verfügbar sind, wie z. B. das Ausführen von Pig-Skripten oder das Erstellen von SCP-Dateien.
Wir verwenden Luigi intern bei Spotify, um jeden Tag Tausende von Aufgaben auszuführen, organisiert in komplexen Abhängigkeitsdiagrammen. Bei den meisten dieser Aufgaben handelt es sich um Hadoop-Jobs. Luigi stellt eine Infrastruktur bereit, die alle möglichen Dinge unterstützt, einschließlich Empfehlungen, Toplisten, A/B-Testanalysen, externe Berichte, interne Dashboards usw.
Da Luigi Open Source ist und keine Registrierungsbarrieren aufweist, ist die genaue Anzahl der Luigi-Benutzer unbekannt. Aber basierend auf der Anzahl der einzelnen Mitwirkenden gehen wir davon aus, dass Hunderte von Unternehmen es nutzen werden. Einige Benutzer haben Blogbeiträge geschrieben oder Präsentationen über Luigi gehalten:
Einige weitere Unternehmen nutzen Luigi, hatten aber noch keine Gelegenheit, darüber zu schreiben:
Wir freuen uns sehr, dass Ihr Unternehmen hier hinzugefügt wird. Senden Sie einfach eine PR auf GitHub.
Luigi wurde bei Spotify hauptsächlich von Erik Bernhardsson und Elias Freider entwickelt. Viele andere Menschen haben seit Open Sourcing Ende 2012 Beiträge geleistet. Arash Rouhani war von 2015 bis 2019 der Hauptbetreuer, und jetzt betreut das Datenteam von Spotify Luigi.