Распространение Scala по кластеру? - PullRequest
7 голосов
/ 11 марта 2012

Итак, я недавно начал изучать Scala и использовал графики как своего рода проект для улучшения моей Scala, и все идет хорошо - с тех пор мне удалось легко распараллелить некоторые алгоритмы графиков (которые получают выгоду отраспараллеливание данных) благодаря удивительной поддержке Scala 2.9 параллельных коллекций.

Однако я хочу сделать еще один шаг вперед и распараллелить его не только на одной машине, но и на нескольких.Предлагает ли Scala какой-либо чистый способ сделать это, как это происходит с параллельными коллекциями, или мне придется подождать, пока я попаду в главу моей книги об актерах / узнаю больше об Akka?

Спасибо!-kstruct

Ответы [ 2 ]

11 голосов
/ 11 марта 2012

Была попытка создания распределенных коллекций (в данный момент проект заморожен).

Альтернативами может быть Akka (который недавно получил действительно классное дополнение: Akka Cluster ), о котором вы уже упоминали, или полноценные кластерные движки, то есть not параллельные коллекции в каком-то смысле и больше похожи на распределение кластера по scala, но могут быть использованы в вашей задаче каким-либо образом - например, Scoobi для Hadoop, Storm или даже Spark (в частности, Бублик для обработки графиков). Существует также Swarm , созданный поверх продолжений с разделителями. И последнее, но не менее важное: Menthor - авторы утверждают, что он особенно подходит для обработки графиков и использует актеры.

Поскольку вы стремитесь работать с графиками, вы также можете рассмотреть Cassovary , который недавно был открыт из твиттера.

Сбор сигналов - это платформа для параллельной обработки данных на основе Akka.

2 голосов
/ 11 марта 2012

Вы можете использовать Akka (http://akka.io) - он всегда был самым продвинутым и мощным фреймворком для актеров и параллелизма для Scala, а свежеиспеченная версия 2.0 допускает приятное прозрачное удаление актеров , иерархии и наблюдение .Канонический способ выполнения параллельных вычислений состоит в том, чтобы создать столько действующих лиц, сколько имеется параллельных частей в вашем алгоритме, опционально распределяя их по нескольким машинам, отправляя их данные для обработки и затем собирая результаты (см. здесь ).

...