在Sharded Cluster中,Mongodb中的Map Reduce输出不正确

时间:2014-01-06 10:28:55

标签: mongodb mapreduce sharding

我一直使用Mongo DB作为独立实例,对我的数据进行一些分析。

但随着我的数据量不断增长,我开始尝试使用Mongo DB Cluster。

我的群集配置如下:

3台机器(2核CPU,2 GB RAM,30 GB硬盘)

1)机器1 - mongos,mongod,mongo配置服务器(Hostname-config2)

2)机器2 - mongod,mongo配置服务器(Hostname-config3)

3)机器3 - mongo配置服务器(Hostname-config1)

我使用了MongoDB的Map-Reduce功能,我观察到,如果是分片群集,当输出定向到分片集合时,map-reduce会输出错误的输出。在独立的mongo实例中没有观察到这个问题。

我有一个名为“user_data”的输入集合和一个名为“intermediate_data”的输出集合。我尝试在单个实例mongo和mongo集群上执行map-reduce代码,并在“intermediate_data”集合中检查已检查的条目数。

以下是独立实例中的输出(这是正确的输出):

  

MongoDB shell版本:2.4.5

     

连接到:test

     

使用analysis_data_shekhar_test

     

切换到db analysis_data_shekhar_test

     

db.intermediate_data.find()。itcount()

     

1090900

Mongo Cluster:

  

mongos>使用analysis_data_shekhar_test

     

切换到db analysis_data_shekhar_test

     

mongos> db.intermediate_data.find()。itcount()

     

934832

我在mongo集群的一个分片中观察到mongod.log,它显示输出计数为1090900(这是正确的输出行数),但集合中的行数(934832)远小于此:

  

Mon Jan 6 22:45:05.352 [conn139] command analysis_data_shekhar_test。$ cmd command:{mapreduce.shardedfinish:{mapreduce:“user_data”,map:function(){                    var sid = this.sid;                    var ...,reduce:function(mac,mac_info_list){               var result = {loclist_07:[],cou ...,scope:{bitmap30:4294967166,bitmap14:4278190206,num7:7,bitmap7:2147483774,num14:14,num30:30},query:{sid:{$ in :[1,2,3,4,5}}},out:{merge:“intermediate_data”,sharded:true}},inputDB:“analysis_data_shekhar_test”,shardedOutputCollection:“tmp.mrs.user_data_1389028296_86”,分片:{config3 :27018:{result:“tmp.mrs.user_data_1389028296_86”,splitKeys:[{_ id:{mac:“aa:aa:aa:aa:aa:aa”,ssid:“ABC”}},{_ id:{mac :“bb:bb:bb:bb:bb:bb”,ssid:“”}},{_ id:{mac:“cc:cc:cc:cc:cc:cc”,ssid:“XYZ”}}, {_id:{mac:“dd:dd:dd:dd:dd:dd”,ssid:“”}},{_ id:{mac:“ee:ee:ee:ee:ee:ee”,ssid:“ “}},{_ id:{mac:”ff:ff:ff:ff:ff:ff“,ssid:”XYZ“}}],timeMillis:183410,count:{input:596103,emit:1192206,reduce: 89217,输出: 1090900 },ok:1.0}},shardCounts:{config3:27018:{input:596103,emit:1192206,reduce:89217,output: 1090900 },count:{emit:1192206,输入:59 6103,输出: 1090900 ,减少:89217}} ntoreturn:1 keyUpdates:0 lock(micros)W:2509 w:12843472 reslen:721 23709ms

有人可以告诉我为什么集合中的行数少于日志中显示的“out”数?

我尝试在google和stackoverflow上搜索类似的问题,但没有找到任何结果。

请帮忙。

0 个答案:

没有答案