2011-01-14 7 views
0

Sind Informationen über Maschinen in einem Cluster (IP-Adresse/Maschinenname) und ein Programm (Java-Sprache) vorhanden, ist eine Software (Manager) verfügbar, die dieses Programm ausführt und die Ausgabe zurückgibt mit den Laufzeiten auf jeder der Maschinen?Distributed Program Execution Manager

Derzeit verwende ich ein Shell-Skript, um dies zu tun, aber ich konnte nicht die Zeit (in Sekunden), um das Java-Programm zurück zu nehmen. Es wäre gut, wenn es einen verteilten Programmausführungsmanager wie den oben beschriebenen gibt.

+0

was meinst du "die Laufzeiten?" – skaffman

+0

zur Laufzeit meinte ich die Zeit (in Sekunden), um das Java-Programm – Raghava

Antwort

1

Anstatt ein eigenes Skript zu schreiben, können Sie einfach tentakel oder shmux verwenden, um Ihre Anwendung parallel auf mehreren Knoten auszuführen. Sie können laufen Tentakel als

tentakel 'time <your application name>' 

, um die Ausgabe zu erhalten und die Zeit, laufen für die Anwendung dauert.

+0

Vielen Dank für die Vorschläge :). Diese sehen genau so aus, wie ich es brauche. Ich werde sie überprüfen. Die Entwicklung dieser beiden Tools scheint jedoch längst gestoppt worden zu sein. Aber ich denke, hier ist es keine große Sorge. – Raghava

1

Ich mag Hudson für solche Sachen verwenden. Es wurde ursprünglich für das Ausführen von Software-Builds und -Tests geschrieben, ist jedoch allgemeiner. Im Grunde ein Controller für die Verwaltung von Jobs und Ausführungen zusammen mit einem Client für die Bereitstellung auf Knoten. Hadoop ist eine weitere Option, wenn Sie die Flexibilität haben, Ihre App für ein bestimmtes verteiltes Computing-Framework neu zu schreiben.

+0

laufen zu lassen Danke für die Antwort. Ich hatte Hadoop vor Augen, tut mir leid, dass ich das nicht erwähnt habe. Ich möchte eine Funktionalität, die wie der Jobcontroller in Hadoop ist. Ähnlich wie bei der Ausführung von map & reduce auf allen Knoten möchte ich, dass mein Manager mein Java-Programm auf allen Knoten ausführt und die Ausgabe erfasst. – Raghava

+0

Hudson lässt Sie das tun, ohne Änderungen an Ihrem Programm. Es kann einen beliebigen Befehl auf dem Host aufrufen, auf dem ein Slave installiert ist. Das Ergebnis (Befehlsausgabe und Dateien, die Sie angeben) wird zurück an die Steuerungsmaschine gesendet, wo sie bei Bedarf überprüft werden können. Sie können Jobs so einrichten, dass sie abhängig von den Ergebnissen anderer Jobs ausgelöst werden. Erstellen Sie Matrizen von Permutationen, die ausgeführt werden sollen. –

+0

danke. Ich werde einen Blick auf Hudson werfen. – Raghava

0

Ich verstehe Ihre Frage nicht sehr. Welche "Laufzeit" willst du zurückbekommen? Welche Clusterlösung verwenden Sie? Für verteilte Kommunikation in Java würde ich JGroups empfehlen. Für verteilte JVM-Check Terrakotta.

+0

Ich möchte die Zeit erhalten, die es dauert, um das Programm auszuführen, und ich möchte auch die Ausgabe des Programms für jede Maschine in dem Cluster abrufen, auf dem das Programm ausgeführt wird. Was bedeutet es mit einer Clusterlösung? – Raghava