Можно ли создать кластер python, написав telnet-сервер, затем telnet-команды и вывод туда и обратно? У кого-нибудь есть лучшая идея для вычислительного кластера Python? PS. Желательно для python 3.x, если кто знает как.
Вычислительный кластер Python
Ответы (7)
Вики Python содержит очень полный список библиотек и инструментов кластерных вычислений Python. Вас может особенно заинтересовать Parallel Python.
Изменить: существует новая библиотека, которая, ИМХО, особенно хороша для кластеризации: execnet. Он маленький и простой. И кажется, что в нем меньше ошибок, чем, скажем, в стандартном модуле multiprocessing
.
Вы можете увидеть большинство сторонних пакетов, доступных для Python 3, перечисленных здесь а>; к кластерным вычислениям относится mpi4py. по-прежнему только Python-2, но MPI является ведущим стандартом для кластерных распределенных вычислений и хорошо изучается (у меня пока нет прямого опыта использования mpi4py с Python 3, но по слухам я считаю, что это хорошая реализация).
Основной альтернативой является собственная встроенная в Python многопроцессорность, который также довольно хорошо масштабируется, если вы не заинтересованы в взаимодействии с существующими узлами, которые соблюдают стандарты MPI, но могут не быть закодированы на Python.
Нет никакой реальной добавленной стоимости в том, чтобы кататься самостоятельно (как говорит Этвуд, не изобретайте велосипед, если только ваша цель не состоит в том, чтобы просто лучше понять колеса!-) - используйте одно из надежных, проверенных, распространенных решений, уже протестированных, отлажены и оптимизированы от вашего имени!-)
Посмотрите на эти
http://www.parallelpython.com/
Я использовал оба варианта, и оба они отлично подходят для распределенных вычислений
более подробный список параметров см. на http://wiki.python.org/moin/ParallelProcessing
и если вы хотите автоматически выполнить что-то на удаленной машине, лучшей альтернативой telnet является ssh, как в http://pydsh.sourceforge.net/
Что ты хочешь делать? Вы можете проверить hadoop. Бэкенд, тяжелая работа выполняется на java, но имеет интерфейс python, поэтому вы можете писать скрипты python для создания и отправки ввода, а также для обработки результатов.
Если вам нужно написать административный скрипт, взгляните также на библиотеку Python ClusterShell или/и ее параллельную оболочку < сильно>сжимать. Это также полезно при работе с наборами узлов (man nodeset).
Я думаю, что IPython.parallel — правильный путь. Активно использую последние полтора года. Это позволяет вам работать в интерактивном режиме с любым количеством рабочих узлов. Если вы работаете на AWS, StarCluster — отличный способ быстро и легко настроить и запустить IPython.parallel. с таким количеством узлов EC2, которое вы можете себе позволить. (Он также может автоматически установить Hadoop и множество других полезных инструментов, если это необходимо.) Есть некоторые хитрости в его использовании. (Например, вы не хотите отправлять большие объемы данных через сам интерфейс IPython.parallel. Лучше распространить сценарий, который будет получать фрагменты данных для каждого механизма отдельно.) Но в целом я обнаружил, что это быть удивительно простым способом распределенной обработки (НАМНОГО лучше, чем Hadoop!)
«Можно ли сделать кластер Python»
Да.
Я люблю да/нет вопросов. Что-нибудь еще вы хотите знать?
(Обратите внимание, что в Python 3 пока мало сторонних библиотек, так что на данный момент вы можете остаться с Python 2.)