问题描述
使用 Hadoop map/reduce 与 Mongo 的内置 map/reduce 在 MongoDB 上进行 map/reduce 工作的主要区别是什么?
What are the key differences to do map/reduce work on MongoDB using Hadoop map/reduce vs built-in map/reduce of Mongo?
我什么时候选择哪个 map/reduce 引擎?每个引擎处理存储在 mongodb 中的数据的优缺点是什么?
When do I pick which map/reduce engine? what are the pros and cons of each engine to work on data stored in mongodb?
推荐答案
我的回答是基于Hadoop MR的知识和经验以及Mongo DB MR的学习.让我们看看有什么主要区别,然后尝试定义选择标准:区别在于:
My answer is based on knowledge and experience of Hadoop MR and learning of Mongo DB MR.Lets see what are major differences and then try to define criteria for selection:Differences are:
- Hadoop 的 MR 可以用 Java 编写,而 MongoDB 的 MR 可以用 JavaScript 编写.
- Hadoop 的 MR 能够利用所有内核,而 MongoDB 的 MR 是单线程的.
- Hadoop MR 不会与数据并置,而 Mongo DB 将与数据并置.
- Hadoop MR 拥有数百万个引擎/小时,可以处理具有大量输出、数据倾斜等的许多极端情况
- 在 Hadoop MR 引擎之上构建了更高级别的框架,例如 Pig、Hive、Cascading.
- Hadoop MR 是主流,并且可以获得大量社区支持.
从上面我可以建议以下选择标准:
如果您需要简单的 group by 和过滤,请选择 Mongo DB MR,不要期望在 map 和 reduce 之间进行大量的 shuffle.换句话说 - 一些简单的事情.
From the above I can suggest the following criteria for selection:
Select Mongo DB MR if you need simple group by and filtering, do not expect heavy shuffling between map and reduce. In other words - something simple.
如果您要执行复杂的、计算量大的 MR 作业(例如一些回归计算),请选择 hadoop MR.在 map 和 reduce 之间有大量或不可预测的数据大小也建议使用 Hadoop MR.
Select hadoop MR if you're going to do complicated, computationally intense MR jobs (for example some regressions calculations). Having a lot or unpredictable size of data between map and reduce also suggests Hadoop MR.
Java 是一种更强大的语言,具有更多的库,尤其是统计库.应该考虑到这一点.
Java is a stronger language with more libraries, especially statistical. That should be taken into account.
这篇关于Hadoop Map/Reduce 与内置 Map/Reduce的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!