Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading 多核服务器上的mongodb map reduce_Multithreading_Mongodb_Parallel Processing_Mapreduce_Nodes - Fatal编程技术网

Multithreading 多核服务器上的mongodb map reduce

Multithreading 多核服务器上的mongodb map reduce,multithreading,mongodb,parallel-processing,mapreduce,nodes,Multithreading,Mongodb,Parallel Processing,Mapreduce,Nodes,我有一个mongodb,有数千条记录,包含很长的向量。 我正在使用某种算法查找输入向量与MDB数据集之间的相关性 psudo代码: function find_best_correlation(input_vector) max_correlation = 0 return_vector = [] foreach reference_vector in dataset: if calculateCorrelation(input_vector,refere

我有一个mongodb,有数千条记录,包含很长的向量。 我正在使用某种算法查找输入向量与MDB数据集之间的相关性

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
这是MapReduce模式的一个很好的候选者,因为我不关心计算的运行顺序

问题是我的数据库位于一个节点上。 我想同时运行多个映射(我有一台8核的机器)

据我所知,MongoDb每个节点只使用一个执行线程——实际上,我是串行运行数据集的。 这是正确的吗

如果是,我可以配置每次map reduce运行的进程/线程数吗? 如果我管理多个并行运行map reduce的线程,然后聚合结果,我的性能会有很大提高(有人尝试过吗)? 如果没有,我可以在同一个节点上复制多个DB,并“欺骗”mongoDb在2个复制上运行吗


谢谢

MongoDB中的Map reduce使用Spidermonkey,这是一个单线程Javascript引擎,因此不可能配置多个进程(并且没有“技巧”)。有一个JIRA票证可以使用多线程JS引擎,您可以按照以下步骤操作:

如果可能,我会考虑新的聚合框架(在MunGDB版本2.2中可用),它是用C++编写的,而不是JavaScript编写的,可以提供性能改进:


谢谢,但仍不清楚是否可以在同一台机器上重新进行多个复制。不建议在单个节点上运行多个MongoD实例。进程可能会争夺RAM之类的资源,这是应该避免的。避免单线程MR的另一个可能的解决方案可能是MongoDB Hadoop连接器,它将数据存储与处理分离:但为了提供更完整的答案,每个进程都有一个JS引擎,因此理论上(尽管不推荐),如果有多个Mongod,则应该可以在单个节点上运行多个MR作业。更好的解决方案是在不同的碎片上并行运行MR作业。更新:MongoDB使用V8,从版本2.3.1开始,issue SERVER-2407已关闭。但是,我不知道这是如何影响m/R作业的并发性的。在Mongo2.6中,对于写和映射减少的mongo实例,我仍然只看到一个CPU繁忙。