mongodb - 如何加速MongoDB的MapReduce?

标签 mongodb mapreduce

我必须使用大量数据的聚类算法执行映射归约操作。 我选择 MongoDB 是因为它的可扩展性、出色的文档、BSon 文档存储和许多其他出色的功能。

但是,map-reduce 操作太慢。我的四核 CPU 只使用了一个核心。

CPU utilization Disk Utilization

我读到this document我知道这是 JavaScript 的错误。

"Only one thread in the mongod process executes Javascript at a time"

我该如何改进?提高 IO 速度?

  • SSD 存储可能有用吗?
  • 将整个 MongoDB 数据加载到 RAM 上?

否则瓶颈只是CPU和单线程算法,所以我必须用Mongo之外的另一种语言重写我的算法,以利用多线程和多处理?

最佳答案

Otherwise bottleneck is only the CPU and the mono-thread algorithm

问题在于,当 Mongo 使用 Spidermonkey 作为其 js 引擎时,工作没有并行化。有一个长期计划move to V8允许多线程执行js任务,但不会在下一个版本(2.2)中出现。

map/reduce 的一些缓慢问题将在 2.2 中得到改善,以便那些能够切换到新版本的人 aggregation framework而不是映射/减少。不幸的是,这听起来对您没有帮助,因为您使用的是自定义算法而不仅仅是聚合计算。

关于mongodb - 如何加速MongoDB的MapReduce?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10861292/

相关文章:

javascript - 无法在 nodejs 8 中创建 mongodb 连接

MongoDB : Failed to connect to 127. 0.0.1 :27017, 原因:errno:61 连接被拒绝

java - Hadoop:奇怪的 ClassNotFoundException

java - 高效查询Hbase

ruby-on-rails - 为什么我不能在 Carrierwave 中编辑此图像?

javascript - 如何在 MeteorJS 中更新 MongoDB 集合上的子文档数组

arrays - findOneAndUpdate 导致重复问题

java - 无法执行基本的 Hadoop Mapreduce Wordcount 示例

java - 通过 Java 提交多个 hadoop 作业

r - 在 R 中使用 Segue 无限期配置 EMR 集群