1

大量のデータのクラスタリングアルゴリズムを使用して、マップリデュース操作を実行する必要があります。スケーラビリティ、優れたドキュメント、BSonドキュメントストレージ、その他多くの優れた機能のために、MongoDBを選択しました。

ただし、map-reduce操作は遅すぎます。クアッドコアCPUの1つのコアのみが使用されています。

CPU使用率 ディスク使用率

私はこのドキュメントを読みましたが、それがJavaScriptのせいであると理解しています。

「mongodプロセスの1つのスレッドのみが一度にJavascriptを実行します」

どうすればそれを改善できますか?IO速度を改善しますか?

  • SSDストレージは便利かもしれませんか?
  • MongoDBのデータ全体をRAMにロードしますか?

それ以外の場合、ボトルネックはCPUとモノスレッドアルゴリズムのみであるため、マルチスレッドとマルチプロセッシングを利用するには、Mongo以外の別の言語でアルゴリズムを書き直す必要がありますか?

4

3 に答える 3

2

それ以外の場合、ボトルネックはCPUとモノスレッドアルゴリズムのみです。

問題は、MongoがjsエンジンとしてSpidermonkeyを使用している間は、作業の並列化が行われないことです。jsタスクのマルチスレッド実行を可能にするためにV8に移行する長期計画がありますが、次のリリース(2.2)にはなりません。

map / reduceの代わりに新しい集約フレームワークに切り替えることができる人々のために、map/reduceの速度の低下の一部が2.2で改善されます。残念ながら、集計計算だけでなくカスタムアルゴリズムを使用しているため、それが役立つとは思えません。

于 2012-06-02T18:13:51.063 に答える
0

Map-reduceは、ある時点でMongoDBに追加された付録のようなものです。MongoDBでスケーラブルなMRオプションを探している場合は、MongoDBHadoop統合を調べてください。MongoDBのMR実装は、スケーラブルなエンタープライズソリューションに使用するには、制限が多すぎて恐ろしいものです。

于 2012-06-02T13:42:49.217 に答える
0

MongoDB map-reduceドキュメントの同時実行セクションでは、複数のmap-reduceが並行して実行されることを示していますが、それらは時々互いにブロックします。

http://docs.mongodb.org/manual/applications/map-reduce/#map-reduce-concurrency

あなたの質問は、処理アルゴリズムが単一のmap-reduce操作であることを意味します。したがって、それを複数のmap-reduce操作に分割できる場合は、いくつかの利点があります。

ただし、IOwaitがなく、単一のプロセッサが最大になっている場合は、その可能性は低いと思われます。

于 2013-02-27T11:32:41.767 に答える