2012-06-02 4 views
1

많은 양의 클러스터링 알고리즘으로지도 축소 작업을 수행해야합니다. 확장 성, 훌륭한 문서, BSon 문서 저장 및 기타 많은 훌륭한 기능을 위해 MongoDB를 선택했습니다.MongoDB의 맵 축소 속도를 높이려면 어떻게해야합니까?

그러나지도 축소 작업은 이 너무 느림입니다. 내 쿼드 코어 CPU 중 하나의 코어 만 사용됩니다. Disk Utilization

CPU utilization

나는 this document 읽고 나는이 자바 스크립트의 잘못 이해합니다.

"는 mongod 과정에서 하나 개의 스레드가 한 번에 자바 스크립트를 실행"

내가 어떻게 향상시킬 수 있습니까? IO 속도 향상?

  • SSD 저장이 유용 할 수 있습니까?
  • 전체 MongoDB의 데이터를 RAM에로드 하시겠습니까?

그렇지 않으면 병목 현상이 CPU와 단일 스레드 알고리즘, 그래서 멀티 스레딩과 멀티 프로세싱을 활용하기 위해, 몽고 이외의 다른 언어로 내 알고리즘을 다시 작성해야?

답변

2

그렇지 병목 만 CPU와 모노 - 스레드 알고리즘

문제는 몽고는 JS 엔진으로 SpiderMonkey를 사용하는 동안 작업에는 병렬 없다는 것이다. move to V8에 대한 장기 계획을 통해 js 작업의 다중 스레드 실행을 허용하지만 다음 릴리스 (2.2)를 만들지는 않습니다.

맵/리덕션 대신 느린 속도의 일부가 map/reduce 대신 새로운 aggregation framework으로 전환 할 수있는 사람들을 위해 2.2에서 개선 될 것입니다. 불행히도 집계 계산뿐만 아니라 사용자 정의 알고리즘을 사용하고 있기 때문에 도움이 될 것 같지 않습니다.

0

Map-reduce는 MongoDB에 추가 된 부록과 같습니다. MongoDB를 사용하여 높여주는 MR 옵션을 찾고 있다면 MongoDB Hadoop 통합을 살펴보십시오. MongoDB의 MR 구현은 확장 가능한 엔터프라이즈 솔루션을 위해 MongoDB를 사용하기에는 너무 제한적이고 무섭습니다.

+0

제안 해 주셔서 감사합니다. –

0

문서에게지도-줄이기 위해 MongoDB를의 동시성 섹션 제안이 여러지도-감소가 항상 서로를 차단하지만, 병렬로 실행됩니다

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

귀하의 질문이 처리 알고리즘을 의미 는 단일 map-reduce 작업이므로이를 여러 map-reduce 작업으로 분할 할 수 있으면 몇 가지 이점이 나타날 수 있습니다.

그러나 IOwait가없고 단일 프로세서가 초과 된 경우에는 거의 불가능합니다.

관련 문제