Кластер на Python вычислить

можно ли создать кластер python, написав сервер telnet, затем telnet-ing команды и выводить взад и вперед? У кого-нибудь есть лучшая идея для вычислительного кластера python? ПС. Предпочтительно для python 3.x, если кто-то знает как.

7 ответов


в вики Python размещен очень полный список Python кластерные вычислительные библиотеки и инструменты. Вы можете быть особенно заинтересованы в Параллельный Python.

Edit: есть новая библиотека, которая ИМХО особенно хороша в кластеризации:execnet. Она маленькая и простая. И, похоже, у него меньше ошибок, чем, скажем, у стандартного multiprocessing модуль.


вы можете увидеть большинство сторонних пакетов для Python 3 перечислены здесь; имеет отношение к вычислению кластера mpi4py -- большинство других распределенных вычислительных инструментов, таких как pyro, по-прежнему являются Python-2, но MPI является ведущим стандартом для кластерных распределенных вычислений и хорошо изучает (у меня нет прямого опыта использования mpi4py с Python 3, но по слухам я считаю, что это хорошая реализация).

основной альтернативой является Python собственный встроенный многопроцессорность, который также довольно хорошо масштабируется, если у вас нет интереса к взаимодействию существующих узлов, которые уважают стандарты MPI, но не могут быть закодированы в Python.

нет никакой реальной добавленной стоимости в прокатке собственного (Как говорит Этвуд, не изобретайте колесо, если ваша цель-просто лучше понять колеса!- ) -- используйте одно из твердых, протестированных, распространенных решений, уже протестированных, отлаженных и оптимизированных от вашего имени!-)


посмотреть в эти

http://www.parallelpython.com/

http://pyro.sourceforge.net/

Я использовал оба, и оба превосходны для распределенных вычислений
более подробный список опций см. В разделе http://wiki.python.org/moin/ParallelProcessing

и если вы хотите автоматически выполнить что-то на удаленной машине, лучшей альтернативой telnet является ssh, как в http://pydsh.sourceforge.net/


какие вещи вы хотите сделать? Вы можете проверить в Hadoop. Бэкэнд, тяжелый подъем выполняется на java, но имеет интерфейс python, поэтому вы можете писать скрипты python, создавать и отправлять входные данные, а также обрабатывать результаты.


Если вам нужно написать административные скрипты, взгляните на ClusterShell библиотека Python тоже, или / и ее параллельная оболочка clush. Это полезно также при работе с наборами узлов (человек nodeset).


Я думаю оболочкой IPython.параллель - это путь. Я широко использую его последние полтора года. Это позволяет работать в интерактивном режиме с рабочих узлов, как вы хотите. Если вы находитесь на AWS, StarCluster это отличный способ получить IPython.параллельно и работает быстро и легко с таким количеством узлов EC2, как вы можете себе позволить. (Он также может автоматически установить Hadoop и множество других полезных инструментов, если это необходимо.) Есть несколько трюков, чтобы использовать его. (Для например, вы не хотите отправлять большие объемы данных через IPython.сам параллельный интерфейс. Лучше распространять скрипт, который будет вытаскивать куски данных на каждом движке по отдельности.), Но в целом, я нашел, что это удивительно простой способ сделать распределенная обработка (путь лучше, чем Hadoop!)


"можно ли сделать кластер python"

да.

Я люблю да / нет вопросов. Еще что-нибудь хочешь знать?

(обратите внимание, что Python 3 имеет несколько сторонних библиотек, поэтому вы можете остаться с Python 2 на данный момент.)