2

嗨,我是 Hadoop 和 NoSQL 技术的新手。我开始通过读取存储在 HDFS 中的文件并处理它来学习 world-count 程序。现在我想将 Hadoop 与 MongoDB 一起使用。从这里开始程序。

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

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

4

2 回答 2

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/

于 2013-02-18T05:13:59.983 回答
3

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

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

我写了一篇博文,详细介绍了如何在此处使用 Mongo 和 Hadoop:http: //blog.mortardata.com/post/43080668046/mongodb-hadoop-why-how

于 2013-02-19T13:36:47.447 回答