Hadoop Map / Reduce vs内置Map / Reduce

时间:2012-02-15 03:44:54

标签: mongodb hadoop

使用Hadoop map / reduce与Mongo的内置map / reduce进行MongoDB上的map / reduce工作有哪些主要区别?

我何时选择哪个地图/减少引擎?每个引擎处理存储在mongodb中的数据的优缺点是什么?

4 个答案:

答案 0 :(得分:31)

我的回答是基于Hadoop MR的知识和经验以及Mongo DB MR的学习。 让我们看看主要的差异,然后尝试定义选择标准: 差异是:

  1. Hadoop的MR可以用Java编写,而MongoDB是用JavaScript编写的。
  2. Hadoop的MR能够利用所有内核,而MongoDB是单线程的。
  3. Hadoop MR不会与数据并置,而Mongo DB将会并置。
  4. Hadoop MR拥有数百万发动机/小时,可以应对大量输出,数据偏斜等的角落情况。
  5. 在Hadoop MR引擎之上有更高级别的框架,如Pig,Hive,Cascading。
  6. Hadoop MR是主流,并且有很多社区支持。
  7. 从上面我可以建议以下选择标准:
    如果你需要简单的分组和过滤,请选择Mongo DB MR,不要期望map和reduce之间的重复混乱。换句话说 - 简单的事情。

    如果您要进行复杂的,计算密集的MR工作(例如一些回归计算),请选择hadoop MR。在map和reduce之间有大量或不可预测的数据大小也表明Hadoop MR。

    Java是一种更强大的语言,具有更多的库,尤其是统计。应该考虑到这一点。

答案 1 :(得分:10)

从MongoDB开始,2.4 MapReduce作业不再是单线程的。

另外,请参阅Aggregation Framework,了解在MongoDB中执行聚合和其他分析工作负载的更高性能,声明性方法。

答案 2 :(得分:1)

当谈到Hadoop时,第3项肯定是不正确的。处理与数据的共置是Hadoop基础的一部分。

答案 3 :(得分:0)

我对Hadoop MR没有太多经验,但我的印象是它只适用于HDFS,因此您必须在HDFS中复制所有Mongo数据。如果您愿意复制所有数据,我猜Hadoop MR比Mongo MR更快,更强大。