在我们公司,我们有一个 MongoDB 数据库,其中包含大量非结构化数据,我们需要在该数据库上运行 map-reduce 算法来生成报告和其他分析。我们有两种方法可供选择来实施所需的分析:
一种方法是将数据从 MongoDB 提取到 Hadoop 集群,并在 Hadoop 平台中完全进行分析。但是,这需要在准备平台(软件和硬件)和教育团队使用 Hadoop 并为其编写 map-reduce 任务方面进行大量投资。
另一种方法是将我们的精力放在设计 map-reduce 算法上,并在 MongoDB map-reduce 功能上运行算法。通过这种方式,我们可以创建可以生成报告的最终系统的初始原型。我知道 MongoDB 的 map-reduce 功能与 Hadoop 相比要慢得多,但目前数据并没有那么大,这使它成为瓶颈,至少在接下来的六个月内不会。
问题是,使用第二种方法并为 MongoDB 编写算法,它们以后是否可以在几乎不需要修改和算法重新设计的情况下移植到 Hadoop?MongoDB 只支持 JavaScript,但编程语言差异很容易处理。但是,MongoDB 和 Hadoop 的 map-reduce 模型是否存在根本性差异,可能会迫使我们大量重新设计算法以移植到 Hadoop?