2013-02-14 139 views
2

嗨,我是Hadoop和NoSQL技术的新手。我开始通过读取存储在HDFS中的文件并进行处理来学习世界计数程序。现在我想在MongoDB中使用Hadoop。从here开始计划。Hadoop与MongoDB概念

现在我对它存在困惑,它将mongodb数据存储在本地文件系统中,并将本地文件系统中的数据从map/reduce读取到HDFS,然后再将其写入到mongodb本地文件系统。当我学习HBase时,我们可以将其配置为将其数据存储在HDFS上,并且hadoop可以在HDFS(map/reduce)上直接处理它。如何配置mongodb以将其数据存储在HDFS上。

我认为最好的方法是将数据存储在HDFS中进行快速处理。不在本地文件系统中。我对吗?如果我走错了方向,请清除我的概念。

+0

虽然这可能与驱动器工作https://ccp.cloudera.com/display/ CDHDOC/Mountable + HDFS,我不明白你为什么要在MongoDB上引入这样的图层?它仍然只能在一台机器上使用。所以,除了减慢mongo并可能破坏整个过程的稳定性之外,我不明白你为什么要这样做? 10gen已经创建了一个分布式解决方案。 – WiredPrairie 2013-02-14 11:58:56

回答

3

MongoDB是不建在HDFS之上工作,并且它并不是真正必要的,因为Mongo已经有了自己的水平扩展和多个机器上存储数据的方法。

如果您需要使用MongoDB和Hadoop,一种更好的方法是使用MongoDB作为数据源,但处理Hadoop中的所有内容(将使用HDFS作为任何临时存储)。完成数据处理后,您可以将其写回到MongoDB,S3或任何您想要的地方。

我写了一个博客贴子,进入一个小更多的细节如何,你可以用蒙戈和Hadoop在这里工作:http://blog.mortardata.com/post/43080668046/mongodb-hadoop-why-how

3

HDFS是一个分布式文件系统,而HBase是一个NoSQL数据库,它使用HDFS作为其文件系统提供与Hadoop的快速和高效的集成,并已被证明可以大规模使用。能够直接在Hadoop中使用HBase数据或将其推送到HDFS是在选择HBase作为NoSQL数据库解决方案时的最大优势之一 - 我不相信MongoDB提供与Hadoop和HDFS的紧密集成,这可以降低任何性能和将数据从/向数据库移动的效率问题。

请看看这个博客张贴有关MongoDB如何使用Hadoop集成了一个详细的分析 - 的结论之一是,从MongoDB的写入HDFS表现都不好:http://www.ikanow.com/how-well-does-mongodb-integrate-with-hadoop/