嗨,我是hadoop和nosql技术的新手。我通过读取存储在hdfs中的文件并对其进行处理,开始学习world count程序。现在我想用hadoop和mongodb。从这里启动程序。
现在我感到困惑的是,它将mongodb数据存储在本地文件系统上,并将数据从本地文件系统读取到map/reduce中的hdfs,然后再次将其写入mongodb本地文件系统。当我学习hbase时,我们可以将它配置为在hdfs上存储它的数据,hadoop可以直接在hdfs(map/reduce)上处理它。如何配置mongodb将其数据存储在hdfs上。
我认为将数据存储在hdfs中以便快速处理是更好的方法。不在本地文件系统中。我说得对吗?如果我走错了方向,请澄清我的想法。
2条答案
按热度按时间yvfmudvl1#
hdfs是一个分布式文件系统,而hbase是一个nosql数据库,它使用hdfs作为其文件系统,提供了与hadoop的快速高效集成,这已被证明可以大规模工作。在选择hbase作为nosql数据库解决方案时,能够直接在hadoop中使用hbase数据或将其推入hdfs是一个很大的优势—我不认为mongodb提供了与hadoop和hdfs如此紧密的集成,这会减轻将数据从数据库移动到数据库的任何性能和效率问题。
请看这篇博客文章,详细分析mongodb与hadoop的集成情况——其中一个结论是,mongodb对hdfs的写入性能不好:http://www.ikanow.com/how-well-does-mongodb-integrate-with-hadoop/
xkrw2x1b2#
mongodb并不是为在hdfs之上工作而构建的,它也不是真正必要的,因为mongo已经有了自己的方法来水平扩展和处理跨多台机器存储的数据。
如果您需要使用mongodb和hadoop,一个更好的方法是使用mongodb作为数据源,但在hadoop中处理所有数据(对于任何临时存储都将使用hdfs)。处理完数据后,您可以将其写回mongodb、s3或任何您想要的地方。
我写了一篇博文,详细介绍了如何使用mongo和hadoop:http://blog.mortardata.com/post/43080668046/mongodb-hadoop-why-how