Ich habe kürzlich mit Hadoop gespielt und war beeindruckt von der Planung, Verwaltung und Berichterstellung von MapReduce-Jobs. Es scheint, dass die Verteilung und Ausführung neuer Jobs ziemlich nahtlos verläuft und der Entwickler sich auf die Umsetzung seiner Jobs konzentrieren kann.
Ich frage mich, ob etwas in der Java-Domäne für die verteilte Ausführung von Jobs existiert, die nicht einfach als MapReduce-Probleme ausgedrückt werden können. Zum Beispiel:
Jobs, die Aufgabenkoordination und Synchronisation erfordern. Zum Beispiel können sie sequenzielle Ausführung von Aufgaben beinhalten, aber es ist möglich, einige Aufgaben gleichzeitig auszuführen:
%Vor%CPU-intensive Aufgaben, die Sie verteilen möchten, aber keine Ausgaben zur Reduzierung bereitstellen - z. B. Bildkonvertierung / Größenanpassung.
Gibt es ein Java-Framework / eine Java-Plattform, die eine solche verteilte Computerumgebung bietet? Oder ist das mit Hadoop akzeptabel / erreichbar - und wenn ja, gibt es irgendwelche Muster / Richtlinien für diese Art von Jobs?
Ich habe seitdem Spring Batch und Spring Batch Integration , die viele meiner Anforderungen zu erfüllen scheinen. Ich werde dich wissen lassen, wie es mir geht.
Sieh dir Quarz an. Ich denke, es unterstützt Dinge wie Remote-Verwaltung von Jobs und Clustering mehrerer Maschinen, um Jobs auszuführen.
Ich denke, Sie suchen nach einer Workflow-Engine für CPU-intensive Aufgaben (wissen Sie auch "wissenschaftlichen Workflow", zB Ссылка ). Aber ich bin mir nicht sicher, wie verteilt du es haben willst. Normalerweise haben alle Workflow-Engines einen "Single Point of Failure".
Ich glaube, dass einige Probleme als Map-Reduction-Probleme ausgedrückt werden können.
Bei Problemen, die Sie nicht ändern können, um sie an die Struktur anzupassen, können Sie nachsehen, wie Sie mit ExecutorService . Aber es wird auf eine JVM beschränkt sein und es wird ein ziemlich niedriges Level sein. Es wird jedoch eine einfache Koordination und Synchronisation ermöglichen.
ProActive Scheduler scheint Ihren Anforderungen zu entsprechen, insbesondere den komplexen Workflows, die Sie bei der Aufgabenkoordinierung erwähnt haben. Es ist Open Source und Java basiert. Sie können damit beliebige Aktionen, Hadoop-Jobs, Skripte, Java-Code, ... ausführen.
Haftungsausschluss: Ich arbeite für die Firma dahinter
Probieren Sie Redisson -Rahmen aus. Es bietet eine einfache API zum Ausführen und Planen von java.util.concurrent.Callable
und java.lang.Runnable
Aufgaben. Hier ist Dokumentation über verteilte Executor Service und Scheduler-Service
Tags und Links java hadoop distributed-computing job-scheduling