1

我对并行编程和 Erlang 语言都很陌生,而且我有点挣扎。

我很难实现 mapreduce 骨架。我生成了 M 个映射器(它们的任务是将幂函数映射到浮点数列表)和 R 个化简器(它们对映射器发送的输入列表的元素求和)。

然后我想要做的是将每个映射器的中间结果发送到一个随机减速器,我该如何将一个映射器链接到一个减速器?我已经在互联网上查看了示例。我能找到的最接近我想做的事情是这个词反例,作者似乎找到了一种将映射器链接到reducer的聪明方法,并且逻辑是有道理的,但是我无法调整它为了满足我的特殊需要。也许键值实现不适合查找幂列表的总和?

请问有什么帮助吗?

4

1 回答 1

1

只是为了提供更新,显然 OP 中链接的算法存在问题。看起来同步协议有问题,这可以通过调用 sleep() 函数来暗示(即它不应该存在)。

有关 map/reduce 框架的良好工作实现,请参考 Joe Armstrong 在 Programming Erlang 书(第 2 版)中的版本。

Armstrong 的版本仅使用一个减速器,但可以轻松修改为更多减速器,以消除瓶颈。我还添加了一个将输入列表拆分为块的功能。每个映射器都会得到一大块数据。

于 2021-12-21T09:21:45.683 回答