Насколько масштабируема MapReduce в оригинальных функциональных языках? - PullRequest
2 голосов
/ 22 мая 2011

Модель программирования Map-Reduce проистекает из карты и сокращает функции, которые присутствуют в функциональных языках, таких как Lisp и Scheme, много лет назад.

Я помню из университета (в начале 90-х), что даже тогда мне говорили, что Map-Reduce имеет преимущества в плане масштабируемости.

В настоящее время мы все знаем о Hadoop и оригинале от Google, с которого он был скопирован. Что меня интересует, так это то, какие опции существуют в «старых» функциональных языках для выполнения Map-Reduce хотя бы на нескольких вычислительных узлах?

Или это одна из тех функций, которые хорошо выглядели на бумаге, но никто так и не удосужился построить, пока Google не сделал это?

1 Ответ

8 голосов
/ 22 мая 2011

Map / Reduce является частным случаем параллелизма данных .

Широко распространен параллелизм данных (который превышает просто map и fold).используется в высокопроизводительных вычислительных языках и в параллельных функциональных языках.Google и другие разработали высокооптимизированную (ограниченную) модель распределенного программирования для своего варианта использования, но они наверняка полностью осведомлены о происхождении и состоянии этой работы в других местах.

языки HPC, такие как

и чисто функциональные языки с полным параллелизмом данных:

Все они поддерживают модель параллельного программирования с полными данными для распределенных или многоядерных систем.В частности, Chapel, Fortress и X10 нацелены на масштабную масштабируемость на крупнейших в мире компьютерных кластерах.Многие другие языки поддерживают некоторые понятия параллельного отображения и сгиба (например, Erlang, Clojure, Scala, F #).

Так что, безусловно, Google популяризировал параллелизм данных в его основной форме, такой как отображение / уменьшение, но это не конецистории.

...