MapReduce在原始函数式语言中的可扩展性如何?

时间:2011-05-22 12:11:42

标签: functional-programming hadoop scalability mapreduce parallel-processing

Map-Reduce编程模型源于map和reduce函数,这些函数存在于函数语言中,如Lisp和Scheme可以追溯到很多年。

我记得大学(90年代初期),即便在那时我被告知Map-Reduce在可扩展性方面具有优势。

目前我们都知道Hadoop和来自Google的原始版本是从中复制的。 我想知道的是,“旧”函数语言中存在哪些选项可以在至少几个计算节点上进行Map-Reduce?

或者这些功能在纸上看起来不错,但在谷歌做之前没有人真正构建过这个功能吗?

1 个答案:

答案 0 :(得分:8)

Map / Reduce是 data parallelism 的特例。

数据并行性(不仅仅是mapfold)广泛用于高性能计算语言和并行函数语言。谷歌和其他人已经为他们的用例构建了一个高度优化(受限制)的分布式编程模型,但是他们肯定完全了解其他地方的这项工作的起源和状态。

HPC语言,例如

和纯函数式语言,具有完整数据并行性:

都支持全数据并行编程模型,适用于分布式或多核系统。特别是,Chapel,Fortress和X10旨在为全球最大的计算机集群提供大规模可扩展性。许多其他语言支持并行映射和折叠的一些概念(例如Erlang,Clojure,Scala,F#)。

因此,Google肯定将数据并行性推广为map / reduce的基本形式,但这不是故事的结尾。