Frage

Ich hatte kürzlich ein Spiel mit Hadoop und war beeindruckt von der Planung, Verwaltung und Berichterstattung über MapReduce -Jobs. Es scheint die Verteilung und Ausführung neuer Arbeitsplätze ziemlich nahtlos zu machen, sodass der Entwickler sich auf die Umsetzung ihrer Jobs konzentrieren kann.

Ich frage mich, ob in der Java -Domäne für die verteilte Ausführung von Jobs, die nicht leicht als MapReduce -Probleme ausgedrückt werden, etwas vorhanden sind. Zum Beispiel:

  • Jobs, die Aufgabenkoordination und Synchronisation erfordern. Beispielsweise können sie eine sequentielle Ausführung von Aufgaben beinhalten, aber es ist möglich, einige Aufgaben gleichzeitig auszuführen:

                   .-- B --.
            .--A --|       |--.
            |      '-- C --'  |
    Start --|                 |-- Done
            |                 |
            '--D -------------'
    
  • CPU -intensive Aufgaben, die Sie verteilen möchten, aber keine Ausgänge zur Reduzierung der Bildkonvertierung/-änderung zur Verfügung stellen.

Gibt es also ein Java -Framework/eine Java -Plattform, die eine solche verteilte Computerumgebung bietet? Oder ist so etwas akzeptabel/erreichbar mit Hadoop - und wenn ja, gibt es Muster/Richtlinien für diese Art von Jobs?

War es hilfreich?

Lösung

Ich habe seitdem gefunden Frühlingsstapel und Integration der Frühlings -Batch die anscheinend viele meiner Anforderungen entsprechen. Ich werde Sie wissen lassen, wie ich weiterkomme.

Andere Tipps

Sich ansehen Quarz. Ich denke, es unterstützt Dinge wie das Management von Jobs aus der Ferne und das Cluster mehrerer Maschinen, um Jobs zu betreiben.

Ich denke, Sie suchen nach einer Workflow -Engine für CPU -intensive Aufgaben (wissen Sie auch "wissenschaftlicher Workflow", z. B. http://www.extreme.indiana.edu/swf-survey). Aber ich bin mir nicht sicher, wie verteilt Sie möchten, dass es sein soll. Normalerweise haben alle Workflow -Motoren einen "einzigen Ausfallpunkt".

Ich glaube, einige Probleme können als Map-Reduce-Probleme ausgedrückt werden.

Für Probleme, die Sie nicht ändern können, um die Struktur anzupassen, kann Ihr eigenes Einrichten mit Java's einrichten. Executorservice. Aber es wird auf einen JVM beschränkt und es wird ziemlich gering sein. Es ermöglicht jedoch eine einfache Koordination und Synchronisation.

Proaktiver Scheduler Scheint Ihren Anforderungen zu entsprechen, insbesondere den komplexen Workflows, die Sie mit Aufgabenkoordination erwähnt haben. Es basiert Open Source und Java. Sie können es verwenden, um alles auszuführen, Hadoop -Jobs, Skripte, Java -Code, ...

Haftungsausschluss: Ich arbeite für die Gesellschaft dahinter

Versuchen Redisson Rahmen. Es bietet eine einfache API zum Ausführen und Planen java.util.concurrent.Callable und java.lang.Runnable Aufgaben. Hier ist Dokumentation über verteilte Executor -Dienst und Scheduler -Service

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top