Nie*_*jes 2 parallel-processing hadoop functional-programming scalability mapreduce
Map-Reduce编程模型源于map和reduce功能,这些功能存在于Lisp和Scheme等功能语言中,可以追溯到很多年前.
我记得大学(90年代早期),即便在那时我被告知Map-Reduce在可扩展性方面具有优势.
目前我们都知道Hadoop和谷歌的原件是从中复制而来的.我想知道的是,"旧"函数语言中存在哪些选项可以在至少几个计算节点上进行Map-Reduce?
或者这是在纸上看起来不错的那些功能之一,但在谷歌做到之前,没有人能够真正建立起来吗?
Map/Reduce是数据并行的一个特例.
数据并行性(不仅仅是map
和fold
)广泛用于高性能计算语言和并行功能语言.谷歌和其他人已经为他们的用例构建了一个高度优化(受限制)的分布式编程模型,但他们肯定完全了解其他地方的这项工作的起源和状态.
HPC语言,例如
和纯函数式语言,具有完整的数据并行性:
所有这些都支持分布式或多核系统的完整数据并行编程模型.特别是,Chapel,Fortress和X10旨在为全球最大的计算机集群提供巨大的可扩展性.许多其他语言支持并行映射和折叠的一些概念(例如Erlang,Clojure,Scala,F#).
因此,Google肯定将数据并行性推广为map/reduce的基本形式,但这不是故事的结尾.