【问题标题】:Is it possible to get map reduce progress notifications in mongo?是否可以在 mongo 中获取地图减少进度通知?
【发布时间】:2012-08-14 16:41:13
【问题描述】:

Map Reduce 在 Mongo 中很慢。这是给定的。所以,我想知道是否可以接收 map reduce 进度通知。

谢谢。

【问题讨论】:

  • 解决方法是不使用map-reduce。 MongoDB 中的 MR 设计糟糕,实现被破坏。如果你真的需要一个可靠的 MR 实现:将 MongoDB 与 Hadoop 一起使用 - 否则不要使用它。
  • 感谢您的建议。我正在使用 Windows 7 进行开发。这是否意味着我必须拥有 Cygwin + OpenSSH 才能运行 Hadoop? Hadoop 是 Mongo MR 引擎唯一可行的替代方案吗?
  • Hadoop 对您的应用程序来说是一个额外的复杂层,它需要自己的服务器、与 Mongo 的连接器(从读取用户组来看,它有时可能非常狡猾)并且实际上并不像内置先生。你基本上是在寻找一个全新的分布式 MR 引擎,它可能是一个简单的 MR,只是运行大量数据。
  • 事实上,与@Maulwurfn 相矛盾的是,我认为正确的答案是以不需要 MR 的方式构建数据和应用程序,或者尝试新的聚合框架或使用为 MongoHQ 和 MongoLabs 等外部 MR 提供的预构建服务。没有必要为 MR 运行你自己的 hadoop 集群……这太过分了

标签: mongodb mapreduce


【解决方案1】:

我不知道任何内置功能。但是,您可以每隔一段时间在单独的脚本中运行 db.currentOp(),读取 map-reduce 进度并通知相关方。

这是我能看到的一个例子:

> db.currentOp()
{
    "inprog" : [
        {
            "opid" : 249198781,
            "active" : true,
            "lockType" : "read",
            "waitingForLock" : false,
            "secs_running" : 14,
            "op" : "query",
            "ns" : "mydb.mycoll",
            "query" : {
                "mapreduce" : "mycoll",
                "map" : function cf__9__f_() {
    emit(this.aid, 1);
},
                "reduce" : function cf__10__f_(k, vals) {
    var result = 0;
    vals.forEach(function (v) {result += v;});
    return result;
},
                "out" : {
                    "inline" : 1
                }
            },
            "client" : "127.0.0.1:44254",
            "desc" : "conn",
            "threadId" : "0x7e98f24e4700",
            "connectionId" : 1958947,
            "msg" : "m/r: (1/3) emit phase 644165/7670157 8%",
            "progress" : {
                "done" : 644165,
                "total" : 7670157
            },
            "numYields" : 644
        }
    ]
}

【讨论】:

  • 另外,没有办法检查 100 的进度,只有它仍在运行。
  • 哇,我想知道它是怎么做到的?我的意思是 10gen 自己说没有办法做到这一点,因为没有办法真正理解 js 函数的进展……必须研究一下。请注意,它确实知道输入了多少行,但它仍然不知道应该输出多少行......嗯
猜你喜欢
  • 1970-01-01
  • 2021-10-17
  • 1970-01-01
  • 2011-01-31
  • 1970-01-01
  • 2019-04-08
  • 1970-01-01
  • 1970-01-01
  • 2018-12-22
相关资源
最近更新 更多