DAG(gerichtete azyklische graph) dynamische job-scheduler
Ich brauche die Verwaltung einer großen workflow von ETL-Aufgaben, die Ausführung von der Zeit abhängt, der Verfügbarkeit von Daten oder ein externes Ereignis. Einige jobs können fehlschlagen, während der workflow-Ausführung und das system soll die Fähigkeit haben, starten Sie einen fehlgeschlagenen workflow-Zweig ohne zu warten, für die gesamte workflow-Ausführung beendet.
Gibt es irgendwelche frameworks in python, der kann damit umgehen?
Sehe ich verschiedene Kern-Funktionen:
- DAG-Gebäude
- Ausführung von Knoten (ausführen-cmd-shell mit warten,Protokollierung etc).
- Fähigkeit zum Wiederaufbau sub-Graphen übergeordneten DAG während der Ausführung
- Möglichkeit zum manuellen ausführen von Knoten oder sub-Graphen, während die übergeordneten Graphen ausgeführt wird
- Auszusetzen graph Ausführung beim warten auf externes Ereignis
- Liste job-queue und job-details
Etwas wie Oozieaber mehr Allgemeine Zwecke und in python.
InformationsquelleAutor der Frage Alexandr Mazanov | 2013-01-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
1) Sie geben können dagobah einen Versuch, wie beschrieben, auf seiner github-Seite: Dagobah ist eine einfache dependency-based job-scheduler in Python geschrieben. Dagobah ermöglicht Ihnen das planen von periodischen jobs mit Cron-syntax. Jeder Auftrag startet dann eine Reihe von Aufgaben (teilen) in einer definierten Reihenfolge von einem dependency-graph können Sie leicht ziehen mit klicken-und-ziehen in das web-interface. Dies ist die leichte scheduler-Projekt im Vergleich mit den drei folgenden.
2) In Bezug auf ETL-Aufgaben, luigi die open-Source-Spotify Fokus mehr auf hadoop-jobs, wie beschrieben: Luigi ist ein Python-Modul, das Ihnen hilft, erstellen Sie komplexe pipelines von batch-jobs. Es behandelt die Abhängigkeit der Auflösung, workflow-management, Visualisierung etc. Es kommt auch mit Hadoop-Unterstützung eingebaut.
Die beiden Module sind hauptsächlich geschrieben in Python und web-Schnittstellen sind für die bequeme Verwaltung.
Soweit ich weiß, 'luigi' nicht, eine scheduler-Modul für die job-Aufgaben, die ich denke, ist notwendig für ETL-Aufgaben. Aber mit 'luigi' ist einfacher zu schreiben, die map-reduce-code in Python und Tausende von Aufgaben, die jeden Tag bei Spotify laufen abhängen.
3) Wie luigi, Pinterest open-Source-Ihre workflow-manager namens Pinball. Pinball Architektur folgt einer master-worker-oder master-client zu vermeiden, die Namensgebung Verwirrung mit einem speziellen Typ von client, die wir im folgenden vorstellen) Paradigma, wo die stateful zentralen master fungiert als eine Quelle der Wahrheit über den aktuellen Systemzustand zu stateless clients. Und es integrieren hadoop/hive/spark Aufträge reibungslos.
4) Luftstromnoch einem anderen dag-job-Zeitplan-Projektes als open Source von Airbnb, ist ganz wie Luigi und Flipper. Das backend baut auf Kolben, Sellerie und so weiter. Nach der Beispiel job-codeLuftstrom ist sowohl leistungsfähig und einfach zu verwenden, von meiner Seite.
Nicht zuletzt, Luigi, Luftstrom und Flipper kann mehr weit verbreitet. Und es ist ein großer Vergleich zwischen diesen drei: http://bytepawn.com/luigi-airflow-pinball.html
InformationsquelleAutor der Antwort zfz
Es gibt eine Tonne von diesen; jeder scheint zu schreiben Ihre eigenen. Es ist eine gute Liste an https://github.com/common-workflow-language/common-workflow-language/wiki/Existing-Workflow-systems. Das umfasst Systeme, die Ihren Ursprung in Industrie und Wissenschaft.
InformationsquelleAutor der Antwort Dunk
Haben Sie sich Ruffus?
Habe ich keine Erfahrung mit, aber es scheint zu tun, einige der Punkte auf Ihrer Liste. Es sieht auch ganz hackable, so dass Sie möglicherweise in der Lage sein, um Ihre anderen Anforderungen an sich selbst.
InformationsquelleAutor der Antwort snth