MapReduce -除了单词计数之外的任何东西



我一直在关注MapReduce,并阅读了各种关于它和它的应用的论文,但是,对我来说,MapReduce似乎只适用于最终导致单词计数的极少数场景。

如果你看一下原始论文,谷歌的员工提供了"各种"潜在的用例,如"分布式grep"、"分布式排序"、"反向网络链接图"、"每台主机的术语向量"等。但如果你仔细观察,所有这些问题都可以归结为简单的"计算单词"——即计算数据块中某些东西出现的次数,然后汇总/过滤和排序出现的列表。

也有一些MapReduce被用于遗传算法或关系数据库的情况,但他们不使用谷歌发布的"香草"MapReduce。相反,它们在Map-Reduce链上引入了进一步的步骤,如Map-Reduce- merge等。

你知道任何其他(有记录的?)场景,"香草"MapReduce已经被用来执行不仅仅是单词计数?(可能用于光线追踪,视频转码,密码学等-简而言之,任何"计算量大"的可并行化的东西)

Atbrox维持mapreduce hadoop algorithms in academic papers。这是链接。这些都可以用于实际用途。

MapReduce适用于可以被认为是令人尴尬的并行问题。有很多问题是MapReduce非常不擅长的,比如那些需要在节点之间进行大量全对全通信的问题。例如,快速傅里叶变换和信号相关。

在统计学中有使用MapReduce并行计算的项目。例如,Revolutions Analytics已经启动了一个用于r的rha项目。Hadoop还用于计算生物学和其他具有大量数据集的领域,这些数据集可以由许多离散的作业进行分析。

我是rha中一个包的作者,我编写了几个示例,随源代码一起分发,并在教程中使用,逻辑回归,线性最小二乘,矩阵乘法等。我还想推荐一篇论文http://www.mendeley.com/research/sorting-searching-simulation-mapreduce-framework/这似乎有力地支持mapreduce与经典并行编程模型(如PRAM和BSP)的等价性。我经常将mapreduce算法作为PRAM算法的端口来编写,例如参见blog.piccolboni.info/2011/04/map-reduce-algorithm-for-connected.html。所以我认为mapreduce的范围显然不仅仅是"令人尴尬的并行",而不是无限的。我自己也经历过一些限制,例如在加速一些MCMC模拟时。当然,也可能是我没有使用正确的方法。我的经验法则如下:如果问题可以在O(log(N))个处理器上在O(log(N))个时间内并行解决,那么它就是mapreduce的一个很好的候选,它有O(log(N))个作业,每个作业花费恒定的时间。其他人和我提到的论文似乎更多地关注于0(1)个工作的情况。当您的时间超过O(log(N))时,MR的情况似乎变得有点弱,但是一些限制可能是当前实现固有的(高作业开销)而不是基本的。现在是绘制MR区域图表的好时机。

相关内容

  • 没有找到相关文章

最新更新