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

标签 functional-programming hadoop scalability mapreduce parallel-processing

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

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

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

或者这是那些在纸面上看起来不错但在 Google 做到之前没有人真正开始构建的功能之一?

最佳答案

Map/Reduce 是 data parallelism 的特例.

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

HPC 语言,例如

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

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

因此,Google 确实以 map/reduce 的基本形式普及了数据并行性,但这还没有结束。

关于functional-programming - 原始函数式语言中的 MapReduce 的可扩展性如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6087834/

相关文章:

java - 有兴趣学习Hadoop框架

hadoop - 通过sqoop导入创建HIVE表时出错

hadoop - 验证 HDFS 中文件的校验和

scalability - 非 Azure Web 场上的 SignalR

scala - 创建一个函数,返回几个 bool 谓词的逻辑 OR

arrays - 具有 O(1) 查找和 O(1) 切片的 F# 数组

ios - 编写通用 Swift 方法从属性列表加载数据

f# - 在创建中间值时,我应该存储它吗?

database-design - 从一台服务器扩展到多台服务器

amazon-ec2 - 关于 AWS RDS 多可用区的两个问题