매우 긴 벡터를 보유하고있는 수천 개의 레코드가있는 mongodb가 있습니다. 특정 알고리즘을 사용하여 입력 벡터와 MDB 데이터 세트 간의 상관 관계를 찾고 있습니다.mongodb 맵 멀티 코어 서버에서 줄이기
psudo 코드 :.
function find_best_correlation(input_vector)
max_correlation = 0
return_vector = []
foreach reference_vector in dataset:
if calculateCorrelation(input_vector,reference_vector) > max_correlation then:
return_vector = reference_vector
return return_vector
이 내가 계산에서 실행되는 순서에 대해 걱정하지 않는 패턴을지도-감소를위한 아주 좋은 후보입니다
문제는 내 데이터베이스이다 하나의 노드에 있습니다. 많은 매핑을 동시에 실행하고 싶습니다. (8 코어 머신이 있습니다)
MongoDb는 노드 당 하나의 실행 스레드 만 사용합니다. 실제로는 데이터 세트를 순차적으로 실행하고 있습니다. 이것이 맞습니까?
map-reduce 실행 당 프로세스/스레드 수를 구성 할 수 있습니까? map-reduce를 병렬로 실행하는 여러 스레드를 관리 한 다음 결과를 집계하면 상당한 성능 향상이 나타납니다 (아무도 시도한 적이 있습니까?). 그렇지 않은 경우 - 동일한 노드에 내 DB를 여러 번 복제 할 수 있으며 mongoDb를 2 복제로 실행하도록 "트릭"할 수 있습니까?
감사합니다.
동일한 컴퓨터에서 여러 번 반복하여 작업 할 수 있는지 여부는 아직 알려지지 않았습니다. –
단일 노드에서 여러 MongoD 인스턴스를 실행하는 것은 좋지 않습니다. 프로세스는 피해야하는 RAM과 같은 리소스를 놓고 경쟁 할 수 있습니다. 단일 스레드 MR을 피할 수있는 또 다른 가능한 솔루션은 데이터 저장소를 처리에서 분리하는 MongoDB Hadoop 커넥터 일 수 있습니다. http://www.mongodb.org/display/DOCS/Hadoop – Jenna
그러나보다 완전한 대답을 제공하기 위해 프로세스 당 하나의 JS 엔진이 있으므로 이론에서는 (권장하지는 않지만) 여러 개의 MongoD가있는 경우 단일 노드에서 여러 MR 작업을 실행할 수 있어야합니다. 더 나은 해결책은 다른 샤드에서 MR 작업을 병렬로 실행하는 것입니다. – Jenna