Verteilte Job-scheduling -, management-und reporting
Vor kurzem hatte ich einen spielen, um mit Hadoop und war beeindruckt, es ist Planung, management und reporting von MapReduce-jobs. Es erscheint die Verteilung und Ausführung von neuen Arbeitsplätzen ganz nahtlos, so dass die Entwickler konzentrieren sich auf die Umsetzung Ihrer Aufträge.
Frage ich mich, wenn alles, was existiert, in die Java-Domäne, die für die verteilte Ausführung von jobs, die sind nicht leicht ausgedrückt als MapReduce-Probleme? Zum Beispiel:
-
Aufträge, die eine Aufgabe Koordination und Synchronisation. So können Sie zum Beispiel beinhalten sequentielle Ausführung von Aufgaben noch ist es möglich, die Ausführung mancher Aufgaben gleichzeitig:
.-- B --. .--A --| |--. | '-- C --' | Start --| |-- Done | | '--D -------------'
-
CPU-intensive Aufgaben, die Sie gerne verteilen aber nicht bieten keine Ausgaben zu reduzieren - Bild-Konvertierung/Größenänderung zum Beispiel.
Gibt es also ein Java-framework/Plattform, die sich wie eine verteilte computing-Umgebung? Oder ist diese Art der Sache akzeptabel/erreichbare mithilfe von Hadoop - und wenn ja, gibt es irgendwelche Muster/Richtlinien für diese Art von Arbeit?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich da gefunden Spring Batch und Spring Batch Integration, die erscheinen, um viele meiner Anforderungen. Ich werde Sie wissen lassen, wie ich auf Sie.
Werfen Sie einen Blick auf Quarz. Ich denke, es unterstützt Dinge wie das verwalten von Aufträgen aus der Ferne und clustering-diverse Maschinen für die Aufträge ausführen.
Ich denke, Sie sind auf der Suche für eine workflow-engine für CPU-intensive Aufgaben (wissen Sie auch "scientific Workflows", z.B. http://www.extreme.indiana.edu/swf-survey). Aber ich bin mir nicht sicher, wie Sie verteilt Sie möchten, es zu sein. In der Regel werden alle workflow-engines haben einen "single point of failure".
Glaube ich schon ein paar Probleme, die ausgedrückt werden kann als Zuordnungs-Probleme verringern.
Für Probleme, die Sie nicht ändern können, passen die Struktur, Ihrem Aussehen, können bei der Einrichtung Ihrer eigenen Verwendung von Java ist ExecutorService. Aber es beschränkt sich auf eine JVM und es wird sehr niedrigem Niveau. Es wird zulassen, die für die einfache Koordination und Synchronisation allerdings.
Proaktive Scheduler scheint zu passen, dass Ihre Anforderungen, vor allem die komplexeren workflows, die Sie wissen mit Aufgaben der Koordination.
Es ist open-source und Java-basiert. Sie können es verwenden, um alles, Hadoop-jobs, Skripte, Java-code,...
Disclaimer: ich arbeite für die Unternehmen dahinter
Versuchen Redisson Rahmen. Es bietet eine einfache api zum ausführen und planen
java.util.concurrent.Callable
undjava.lang.Runnable
Aufgaben. Hier ist eine Dokumentation über verteilte Executor service - und Scheduler-service