您好我是Hadoop和NoSQL技术的新手。我开始通过读取存储在HDFS中的文件并对其进行处理来学习世界计数程序。现在我想将Hadoop与MongoDB一起使用。从here开始编程。
现在我很困惑,它将mongodb数据存储在我的本地文件系统中,并将数据从本地文件系统读取到map / reduce中的HDFS,然后再将其写入mongodb本地文件系统。当我研究HBase时,我们可以将其配置为将其数据存储在HDFS上,而hadoop可以直接在HDFS上进行处理(map / reduce)。如何配置mongodb将其数据存储在HDFS上。
我认为在HDFS中存储数据以便快速处理是更好的方法。不在本地文件系统中。我对吗?如果我的方向错误,请清楚我的概念。
答案 0 :(得分:3)
HDFS是一个分布式文件系统,而HBase是一个使用HDFS的NoSQL数据库,因为它的文件系统提供了与Hadoop的快速有效集成,已被证明可以大规模运行。能够直接在Hadoop中使用HBase数据或将其推入HDFS是将HBase选为NoSQL数据库解决方案的一大优势 - 我不认为MongoDB提供了与Hadoop和HDFS的紧密集成,这将降低任何性能和将数据从/向数据库移动的效率问题。
请查看此博客文章,详细分析MongoDB与Hadoop的集成情况 - 其中一个结论是,MongoDB对HDFS的写入效果不佳:http://www.ikanow.com/how-well-does-mongodb-integrate-with-hadoop/
答案 1 :(得分:3)
MongoDB不能在HDFS之上工作,因为Mongo已经有了自己的水平扩展和处理存储在多台机器上的数据的方法,所以它并不是必需的。
如果您需要使用MongoDB和Hadoop,更好的方法是使用MongoDB作为数据源,但处理Hadoop中的所有内容(将HDFS用于任何临时存储)。完成数据处理后,您可以将其写回MongoDB,S3或任何您想要的地方。
我写了一篇博文,详细介绍了如何在这里使用Mongo和Hadoop:http://blog.mortardata.com/post/43080668046/mongodb-hadoop-why-how