Python compute cluster
Wäre es möglich, ein python-cluster, schreiben einen telnet-server, ein telnet-ing Befehle und Ausgabe hin-und-her? Hat jemand eine bessere Idee für ein python compute cluster?
PS. Vorzugsweise für python 3.x, wenn jemand weiß, wie.
- Für die interaktive Verwendung oder als einfache Ausgangspunkt, ausprobieren ipython.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Python-wiki-beherbergt eine sehr umfangreiche Liste Python-cluster-computing-Bibliotheken und-tools. Vielleicht sind Sie besonders daran interessiert,Parallel Python.
Edit: Es gibt eine neue Bibliothek, die ist IMHO besonders gut clustering: execnet. Es ist klein und einfach. Und es scheint weniger bugs als, sagen wir, standard -
multiprocessing
Modul.Können Sie sehen, die meisten third-party-Pakete für Python 3 aufgeführt hier; relevante cluster-Berechnung ist mpi4py - die meisten anderen distributed-computing-tools wie pyro sind noch Python 2, aber MPI ist ein führender standard für die cluster verteilten Berechnung und auch auf der Suche nach (ich habe keine direkte Erfahrung mit mpi4py mit Python 3, noch nicht, aber vom Hörensagen, ich glaube, es ist eine gute Umsetzung).
Die wichtigste alternative ist Python-eigenen built-in multiprocessing, die skaliert ziemlich gut, wenn Sie kein Interesse haben, dich bereits vorhandenen Knoten, die hinsichtlich des MPI-standards, kann aber nicht programmiert werden, die in Python.
Gibt es keinen echten Mehrwert in Ihre eigenen Rollen (wie Atwood sagt, das Rad nicht neu erfinden, es sei denn, Ihr Zweck ist, nur um besser zu verstehen Räder!-) -- verwenden Sie eine der die stabile, erprobte, weit verbreitete Lösungen, die bereits getestet, debugged und optimiert auf Ihren Auftrag!-)
multiprocessing
.Blick in diese
http://www.parallelpython.com/
http://pyro.sourceforge.net/
Ich habe beide und beide sind vorzüglich für verteiltes rechnen
für mehr detaillierte Liste der Optionen finden Sie unter
http://wiki.python.org/moin/ParallelProcessing
und wenn Sie wollen, um die automatische Ausführung etwas auf remote-Maschine , die bessere alternative zu telnet ist ssh, wie in http://pydsh.sourceforge.net/
Was möchten Sie tun? Sie möchten möglicherweise überprüfen Sie heraus hadoop. Das backend, schweres heben ist, erfolgt in java, hat aber eine python-Schnittstelle, so können Sie schreiben python-Skripte erstellen und versenden die Eingabe wie auch als Prozess die Ergebnisse.
Wenn Sie schreiben müssen, administrativen Skripts, werfen Sie einen Blick auf die ClusterShell Python-Bibliothek zu, oder/und die parallel shell clush. Es ist hilfreich, wenn der Umgang mit node-sets auch (Mann Knotenmenge).
Ich denke IPython.parallel ist der Weg zu gehen. Ich nutze es intensiv für das Letzte Jahr und eine Hälfte. Es ermöglicht das arbeiten interaktiv mit, wie viele worker-Knoten, wie Sie wollen. Wenn Sie auf der AWS-Plattform, StarCluster ist ein guter Weg, um IPython.parallel und läuft schnell und leicht, mit so vielen EC2-Knoten als Sie sich leisten können. (Es kann auch die automatische Installation von Hadoop, und eine Vielzahl von anderen nützliche tools, wenn nötig.) Es gibt einige tricks, um es zu benutzen. (Zum Beispiel, Sie wollen nicht, um das senden von großen Mengen von Daten durch die IPython.parallele Schnittstelle selbst. Besser zu verteilen, ein script, das pull-down-Datenblöcke auf jeden Motor einzeln.) Aber insgesamt, ich habe festgestellt, dass es eine bemerkenswert einfache Art und Weise zu tun, die verteilte Verarbeitung (WEG besser als Hadoop!)
"Wäre es möglich, ein python-cluster"
Ja.
Ich Liebe ja/Nein-Fragen. Alles, was Sie wissen wollen?
(Beachten Sie, dass Python 3 hat einige Drittanbieter-Bibliotheken noch, so dass Sie vielleicht wollen, bleiben mit Python 2 im moment.)