Mongodb MapReduce性能。发出单对多?

Mongodb MapReduce性能。发出单对多?,mongodb,performance,optimization,mapreduce,bigdata,Mongodb,Performance,Optimization,Mapreduce,Bigdata,比如说,我们有一个MongoDB集合,其中包含大量的文档。我需要在此集合上执行MapReduceout值为“内联”。emit的值有点大,可以在多个几乎相似的组上进行分离,例如: { teen_walk: 0, teen_car: 0, teen_bicycle: 0, adult_walk: 0, adult_car: 0, adult_bicycle: 0, adult_plane: 0 } 还有更多的团体,我只是想不到而已。问题是:收集此数据集的哪种方法更快:单个大发射值MapReduce

比如说,我们有一个MongoDB集合,其中包含大量的文档。我需要在此集合上执行MapReduceout值为“内联”emit的值有点大,可以在多个几乎相似的组上进行分离,例如:

{
teen_walk: 0, teen_car: 0, teen_bicycle: 0,
adult_walk: 0, adult_car: 0, adult_bicycle: 0, adult_plane: 0
}
还有更多的团体,我只是想不到而已。问题是:收集此数据集的哪种方法更快:单个大发射值MapReduce还是多个小发射值MapReduce

将在上述条件下执行两次MR并发出值:

{walk, car, bicycle}

更快地收集结果

编辑数据由mongodb java驱动程序在BIRT报告中收集


编辑2一般来说,问题是:“哪种方式可以更快地收集所需的数据集:使用单片发射值执行一个MapReduce,还是使用较小发射值执行多个MapReduce?”。但是可以考虑这些执行的可能相似之处。

这完全取决于您的硬件/体系结构。
一般来说,您在MRs上使用的CPU越多,值就越小(这是很明显的:如果您有1000个CPU,但您只发出10个值,那么990个CPU将不会起作用)。

但是,如果发出的值太多,则网络吞吐量必须保持不变。如果您的网络足够快(可能您有HPC群集或超级计算机),那么MR实际上比传统方法慢。
谷歌推出MR的原因是,他们没有超级计算机,但有大量的分布式数据中心。


现在您可以使用它了:在您的系统上进行测试,您就会知道:)。

您两种方法都试过了吗?哪个更快?没有实际的代码很难给出具体的答案。@wdberkeley,不,我没有。我现在没有一个包含大量文档的mongodb。它将在以后的生产中使用。也许有一些指导方针/例子/文章/在线沙盒需要测试/等等。关于这个主题?没有太多的上下文,但我天真地说,在一个m/r中做所有的工作是非常简单的,因为你避免了双倍的开销。因为我们缺少一套完整的可量化数据,她需要考虑,所以你似乎刚刚做了一个重要的决定“boo-boo”指的是在一个没有资格的问题上浪费300分,而在这个问题上,没有人能够用任何权威合理地回答。除非你能在你的问题上添加一些更合理的东西,否则我只希望你的问题非常“蹩脚”“答案实际上不会提供解决方案,但可能会为一些不值得的人赢得你刚刚提供的奖励积分。你应该早点改进你的问题。为什么不用大量随机数据(适合你的需要)填充数据库,看看什么更快?如果你使用mongodb而没有数据库或数据(真实或伪造),你成功的机会很小
{walk, car, bicycle, plane}