以后可以将为MongoDB编写的map-reduce算法移植到Hadoop吗?


11

在我们公司中,我们有一个包含大量非结构化数据的MongoDB数据库,我们需要在该数据库上运行map-reduce算法来生成报告和其他分析。我们提供两种方法来执行所需的分析:

  1. 一种方法是将数据从MongoDB提取到Hadoop集群,然后完全在Hadoop平台中进行分析。但是,这需要在准备平台(软件和硬件)以及教育团队使用Hadoop并为其编写映射减少任务方面进行大量投资。

  2. 另一种方法是将我们的精力放在设计map-reduce算法上,然后在MongoDB map-reduce功能上运行这些算法。这样,我们可以创建可以生成报告的最终系统的初始原型。我知道MongoDB的map-reduce功能与Hadoop相比要慢得多,但是目前数据还不算大,这使得它成为瓶颈,至少在接下来的六个月内不会。

问题是,使用第二种方法并为MongoDB编写算法,是否可以将它们稍后以很少的修改和算法重新设计移植到Hadoop?MongoDB仅支持JavaScript,但是易于处理编程语言上的差异。但是,MongoDB和Hadoop的map-reduce模型之间是否存在根本差异,可能迫使我们重新设计算法以实质性地移植到Hadoop?


Answers:


4

如果仅使用mongo进行原型制作,最后肯定会有翻译任务。

在mongodb上运行MapReduce任务时,它内置了数据源和结构。最终转换为hadoop时,数据结构可能看起来不一样。您可以利用mongodb-hadoop连接器直接从hadoop内部访问mongo数据,但这并没有您想象的那么简单。一旦有了原型IMO,就很容易弄清楚找出最佳转换方式的正确时间。

虽然您需要翻译mapreduce函数,但是基本的伪代码应该很好地适用于两个系统。您不会发现在MongoDB中可以使用Java无法完成的任何事情,或者使用Java要做的事情要复杂得多。


5

您可以在Hadoop中使用map reduce算法,而无需在Java中进行编程。它被称为流传输,就像Linux管道一样工作。如果您认为可以移植功能以读取和写入终端,则应该可以正常工作。是示例博客文章,显示了如何在Hadoop中使用以Python编写的map reduce函数。


1
那仍将由mongo进行处理,我认为从问题上来说,最终解决方案中应避免这种情况。无论如何,要给您带来重要知识的赞誉。
Steve Kallestad 2014年

4

您还可以创建MongoDB-Hadoop 连接


感谢您的帖子,但是您可以在此处提供所链接解决方案的整体说明吗?该链接可能具有问题的答案,但不鼓励仅链接的答案。
鲁本斯2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.