Clojure Futures в контексте моделей параллелизма Scala - PullRequest
10 голосов
/ 14 января 2012

Привет, ребята: после того, как я познакомился с Scala Actors и Clojure's Futures, я чувствую, что оба языка имеют отличную поддержку для многоядерной обработки данных.

Однако мне все еще не удалось определить реальные инженерные различия между функциями параллелизма и плюсами / минусами двух моделей.Являются ли эти языки комплиментарными или противоположными с точки зрения их обработки одновременных абстракций процессов?

Во-вторых, что касается проблем с большими данными, неясно, будет ли сообщество Scala явно поддерживать Hadoop (в то время как сообщество Clojure явно делает это),Как разработчики Scala взаимодействуют с экосистемой hadoop?

Буду признателен за понимание этих двух вопросов.

Ответы [ 2 ]

8 голосов
/ 14 января 2012

Некоторые решения хорошо решаются агентами / актерами, а некоторые нет.Это различие не относится к языкам более чем , как конкретные проблемы вписываются в общие классы решений .Это (очень короткое) сравнение «Действующие лица / агенты» и «Ссылки», чтобы попытаться прояснить вопрос о том, что инструмент должен соответствовать проблеме параллелизма.

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

Clojure ref s - отличное решение проблемы многих потоков, которым необходимо изменить одно и то же одновременно .Они превосходны в многопроцессорных системах с общей памятью, таких как современные ПК и серверы.В дополнение к примеру с банковским счетом Рич Хики (автор clojure) использует пример игры в бейсбол, чтобы объяснить, почему это важно.Если вы хотите использовать актеров для представления бейсбольного матча, то перед тем, как переместить мяч, все поклонники должны будут отправить ему сообщение, спрашивающее, где он находится ... и если они хотят посмотреть, как игрок ловит мяч, то все получитсяболее сложный.

У Clojure есть cascalog, который делает записи заданий hadoop очень похожими на запись clojure.

3 голосов
/ 14 января 2012

Актеры предоставляют способ обработки потенциального чередования и управления синхронизацией, который неизбежно возникает при попытке заставить несколько потоков работать вместе. Каждый участник имеет очередь сообщений, которые он обрабатывает по порядку, чтобы избежать необходимости включать явные блокировки. В этом случае Future предоставляет способ ожидания ответа от актера.

Что касается Hadoop, Twitter только что выпустил библиотеку специально для Hadoop под названием Scalding , но пока библиотека написана для JVM, она должна работать с любым языком.

...