MapReduce在原始函数语言中的可伸缩性如何



Map Reduce编程模型源于Map和Reduce函数,这些函数存在于Lisp和Scheme等函数语言中,可以追溯到许多年前。

我记得在大学里(90年代初),甚至在那时我就被告知Map Reduce在可扩展性方面具有优势。

目前,我们都知道Hadoop以及它从谷歌复制的原始版本。我想知道的是,在"旧"函数语言中有哪些选项可以在至少几个计算节点上执行Map Reduce?

或者,这是一个在纸面上看起来不错的功能,但在谷歌完成之前,没有人真正着手构建它吗?

Map/Reduce是数据并行性的一个特例。

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

HPC语言,如

  • 礼拜堂
  • 要塞
  • X10
  • HPF

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

  • 哈斯克尔
  • NESL

所有这些都支持分布式或多核系统的全数据并行编程模型。特别是,Chapel、Fortress和X10的目标是在世界上最大的计算机集群上实现大规模可扩展性。许多其他语言支持一些并行映射和折叠的概念(例如Erlang、Clojure、Scala、F#)。

因此,谷歌当然推广了数据并行性,其基本形式是map/reduce,但这还不是故事的结束。

相关内容

  • 没有找到相关文章

最新更新