MapReduce - 除了字数统计之外的其他什么?

时间:2011-12-02 01:31:38

标签: multithreading mapreduce

我一直在研究MapReduce并阅读有关它及其应用的各种论文,但是,对我而言,MapReduce似乎只适用于最终导致字数统计的非常狭窄的场景。

如果你看一下original paper Google员工提供的“各种”潜在用例,例如“分布式grep”,“分布式排序”,“反向网络链接图”,“每个主机的术语向量”,等等 但是,如果你仔细观察,所有这些问题归结为简单地“计算单词” - 即计算一大块数据中某些事物的出现次数,然后聚合/过滤和排序出现的列表。

在某些情况下,MapReduce已用于遗传算法或关系数据库,但他们不使用Google发布的“vanilla”MapReduce。相反,他们在Map-Reduce链中引入了更多步骤,如Map-Reduce-Merge等。

你知道其他任何(记录?)场景,其中“vanilla”MapReduce不仅仅用于字数统计吗? (可能用于光线跟踪,视频转码,加密等等 - 简而言之,任何可以并行化的“计算繁重”)

4 个答案:

答案 0 :(得分:4)

Atbrox一直在维持mapreduce hadoop algorithms in academic papers。这是link。所有这些都可以用于实际目的。

答案 1 :(得分:2)

MapReduce适用于可被视为令人尴尬的并行问题。 MapReduce存在很多问题,例如那些需要在节点之间进行大量全面通信的问题。例如,快速傅里叶变换和信号相关。

答案 2 :(得分:1)

有些项目使用MapReduce进行统计中的并行计算。例如,Revolutions Analytics已启动RHadoop project用于R. Hadoop也用于computational biology以及其他具有大型数据集的字段,可以通过许多离散任务进行分析。

答案 3 :(得分:0)

我是RHadoop中其中一个软件包的作者,我编写了几个与源代码一起分发的示例,并在教程,逻辑回归,线性最小二乘,矩阵乘法等中使用。还有一篇论文我想推荐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(N)处理器的O(log(N))时间内并行解决,那么它是mapreduce的一个很好的候选者,具有O(log(N))个工作和每个工作花费的时间。我提到的其他人和论文似乎更关注O(1)工作案例。当你超过O(log(N))时间时,MR的情况似乎变弱了一些,但是当前的实现(高工作开销)可能存在一些局限性,而不是基本的。这是一个非常迷人的时间来制定MR领域。