Genie ist eine von Netflix entwickelte föderierte Big-Data-Orchestrierungs- und Ausführungs-Engine.
Der Wert von Genie lässt sich am besten anhand des Problems beschreiben, das es löst.
Die Big-Data-Infrastruktur ist komplex und entwickelt sich ständig weiter.
Datenkonsumenten (Data Scientists oder andere Anwendungen) müssen viele Hürden überwinden, um eine einfache Abfrage auszuführen:
Was heute funktioniert, funktioniert morgen möglicherweise nicht. Der Cluster wurde möglicherweise verschoben, die Binärdateien sind möglicherweise nicht mehr kompatibel usw.
Multipliziert man diesen Overhead mit der Anzahl der Datenkonsumenten, ergibt sich eine Menge Zeitverschwendung (und Ärger!).
Dateninfrastrukturanbieter stehen vor anderen Problemen:
Genie soll an der Grenze dieser beiden Welten angesiedelt sein und das Leben der Menschen auf beiden Seiten vereinfachen.
Ein Datenwissenschaftler kann „die Wunderlampe reiben“ und einfach sagen: „Genie, führe die Abfrage ‚Q‘ mithilfe der SparkSQL-Engine für Produktionsdaten aus.“ Genie kümmert sich um alle wichtigen Details. Es stellt die erforderlichen Binärdateien und Konfigurationen dynamisch zusammen, führt den Job aus, überwacht ihn, benachrichtigt den Benutzer über seinen Abschluss und stellt die Ausgabedaten für die sofortige und zukünftige Verwendung zur Verfügung.
Anbieter von Big-Data-Infrastrukturen arbeiten mit Genie zusammen, indem sie Ressourcen zur Nutzung verfügbar machen (Cluster, Binärdateien usw.) und die magische Logik einbauen, über die sich der Benutzer keine Gedanken machen muss: An welchen Cluster soll eine bestimmte Abfrage weitergeleitet werden? Mit welcher Spark-Version soll eine bestimmte Abfrage ausgeführt werden? Darf dieser Benutzer auf diese Daten zugreifen? usw. Darüber hinaus werden die Details jedes Jobs zur späteren Prüfung oder Fehlerbehebung aufgezeichnet.
Genie ist von Grund auf sehr flexibel und anpassbar konzipiert. Weitere Informationen finden Sie in der offiziellen Dokumentation
Genie-Builds werden hier auf Travis CI ausgeführt.
Zweig | Bauen | Abdeckung (coveralls.io) |
---|---|---|
Master (4.2.x) | ||
4.1.x | ||
4.0.x |
genie-app
Eigenständiger Genie-Serviceserver.
genie-agent-app
Eigenständiger Genie CLI-Job-Executor.
genie-client
Der Genie-Client interagiert mit dem Dienst über die REST-API.
genie-web
Die Hauptserverbibliothek kann neu verpackt werden, um Serverkomponenten einzufügen und zu überschreiben.
genie-agent
Die Hauptagentenbibliothek kann neu verpackt werden, um Komponenten einzufügen und zu überschreiben.
genie-common
, genie-common-internal
, genie-common-external
Interne Komponentenbibliotheken, die von den Server-, Agent- und Clientmodulen gemeinsam genutzt werden.
genie-proto
Von Server und Agent gemeinsam genutzte Protobuf-Nachrichten und gRPC-Dienstdefinitionen. Dies ist keine öffentliche API, die für die Verwendung durch andere Clients gedacht ist.
genie-docs
, genie-demo
Dokumentation und Demoanwendung.
genie-test
, genie-test-web
Testen von Klassen und Dienstprogrammen, die von anderen Modulen gemeinsam genutzt werden.
genie-ui
JavaScript-Benutzeroberfläche zum Suchen und Visualisieren von Jobs, Clustern und Befehlen.
genie-swagger
Automatische Konfiguration von Swagger über Spring Fox. Zum endgültigen Bereitstellungsartefakt des zu aktivierenden Servers hinzufügen.
Genie veröffentlicht auf Maven Central und Docker Hub
Beispiele finden Sie im Demo-Abschnitt der Dokumentationen. Und im Abschnitt „Setup“ finden Sie detailliertere Anweisungen zum Einrichten von Genie.
Der Genie Python-Client wird in einem anderen Repository gehostet.
Eine ausführliche Erläuterung der Genie-Architektur, Anwendungsfälle, API-Dokumentation, Demos, Bereitstellungs- und Anpassungshandbücher und mehr finden Sie in der Genie-Dokumentation.
Um sich mit Fragen und Vorschlägen an Genie-Entwickler zu wenden, nutzen Sie bitte GitHub Issues