9

我一直在尝试了解 MongoDB 中 MapReduce 的基础知识,即使在实现它之后,我也不确定它与 SQL 的 GROUP BY 甚至是 Mongo 自己的 GROUP BY 有什么不同。在 SQL Server 中,GROUP BY 可以通过流或散列聚合来完成。MapReduce 是不是类似于散列聚合,只是在大量服务器之上?

我一直在阅读 MR for MongoDB 将作为后台进程运行的地方,因为它是一个“繁重的操作”。鉴于数据是分片的,GROUP BY 不是同样“重”吗?也就是说,我只是想比较那些可以作为 MR 作业或使用 GROUP BY 查询来实现的操作类型。

有没有 GROUP BY 不能做,只有 MR 能做的事情?

此外,Hadoop 似乎非常擅长 MR(这只是我读过的……我从未在 Hadoop 上工作过)。Hadoop 的 MR 与 Mongo 的 MR 有何不同?

我很困惑。请帮助或指导我找到一个解释 MapReduce 需求的好教程。

4

2 回答 2

8

使用 MR 获得的是速度。GROUP BY 在 SQL 中是一个缓慢的操作,而 MR 在 MongoDB 中甚至更慢。但是您所做的是创建新集合并实时迭代它们。当您拥有大量数据并希望能够实时对其进行迭代时,这非常有用。

在我正在处理的项目中,有一个 Python 脚本在后台运行(cron 作业),每天执行一次不同的 map/reduce。我们不是使用 SQL group by 迭代大型表,而是使用 MR 迭代一次,然后在创建的新集合上快速迭代。

我没有Hadoop的经验。所以我很抱歉我不能在那里填写你。

教程: http ://www.mongovue.com/2010/11/03/yet-another-mongodb-map-reduce-tutorial/

编辑:

在这里,您可能会看到 SQL 查询到 MongoDB Map/Reduce 的完整翻译: GROUP BY 到 MongoDB Map/Reduce 它来自:http ://rickosborne.org/download/SQL-to-MongoDB.pdf

于 2012-07-06T09:00:01.913 回答
3

许多人使用 MongoDB 作为数据存储,使用 Hadoop 进行处理,因为两者之间存在连接器。每个 MongoDB 节点可以处理多个 Hadoop 节点读入它。作为说明,我建议将 mongo 和 Hadoop 节点分开以获取内存。

如果你没有,这里有一些文件给你

可能值得关注的另一件事是2.2中出现的新聚合框架下表将 SQL中的操作与 MongoDB 聚合框架中的操作等同起来。

于 2012-07-06T09:35:33.613 回答