MapReduce 的传统定义将其描述为“在集群上使用并行、分布式算法处理大型数据集的编程模型”。
周末,我尝试了 MongoDB 并尝试了一些简单的 MapReduce 查询。(书中的基本字数问题)。MongoDB 表现得非常好,但后来我开始怀疑它是否真的是 MapReduce 操作,或者只是一个简单的 group-by 聚合,因此我的问题是:
在单节点“集群”的情况下,使用 MapReduce 有意义吗?
MapReduce 的传统定义将其描述为“在集群上使用并行、分布式算法处理大型数据集的编程模型”。
好吧,我不需要在集群上,单个节点可以使用线程或进程实现 map 和 reduce 功能。在做 map reduce 时我不知道 mongodb 的内部动态,但我知道 MongoDB 中的 map reduce 没有与 Hadoop 相同的动态。
在单节点“集群”的情况下,使用 MapReduce 有意义吗?
对于大量数据,map 和 reduce 函数需要在分布式环境中执行,所以处理大数据没有意义(对于小数据,没关系)。
观点
抱歉,这部分不是答案,而是开放讨论的声明。在软件系统中,MongoDB 的职责应该是保留数据而不是对其进行处理。如果有数据处理需求(将是99%)MongoDB MapReduce可以使用直到一定的数据量(导入之前确定阈值),然后应该传播到Hadoop集群。(或类似的分布式解决方案)