对于大量使用的刮板/爬虫来说,最好的分布式存储解决方案是什么?

时间:2013-05-23 18:11:19

标签: mongodb web-scraping web-crawler hdfs couchbase

我正在实施一个网络抓取工具,每天需要抓取并存储大约15GB +的HTML文件。每日数据量也可能增长。

我打算尽可能长时间地存储已删除的数据,但是也希望为每个页面存储完整的HTML文件至少一个月。

我的第一个实现将HTML文件直接写入磁盘,但很快就遇到了inode限制问题。

接下来我尝试使用Couchbase 2.0作为键/值存储,但Couchbase服务器在网络抓取写入5-8小时后会开始返回Temp_OOM错误。重新启动Couchbase服务器是唯一的恢复途径。

MongoDB是一个很好的解决方案吗? This article让我担心,但听起来他们的要求超出了我的需要。

我也看了一下Cassandra和HDFS,但我不确定这些解决方案对我的问题是否有点过分。

至于查询数据,只要我能获得网址和日期的特定页面数据,就会很好。数据也大部分是一次写入,一次读取,然后存储以备将来可能的读取。

任何有关存储大量HTML文件的建议都会有所帮助。

2 个答案:

答案 0 :(得分:1)

假设每个HTML页面50kB,每天15GB每天为我们提供300.000+页面。每月约1000万。

MongoDB肯定能很好地处理这个数据量。关于其局限性,一切都取决于您打算如何阅读和分析数据。在给定数据量的情况下,您可以利用map / reduce功能。

但是,如果您的问题规模可能会进一步扩大,您可能需要考虑其他选项。值得注意的是,Google搜索引擎使用BigTable作为HTML数据的存储。从这个意义上说,在你的用例中使用Cassandra是一个很好的选择。 Cassandra提供卓越的,持久的写入/读取性能,并且水平扩展远远超出您的数据量。

答案 1 :(得分:0)

我不确定您使用Cassandra为您提供这些错误时所执行的部署方案。可能需要进行更多调查以了解导致问题的原因。您需要追溯错误以了解其来源,因为根据上述要求,Cassandra应该可以正常工作,并且不应该在5小时后停止(除非您有存储问题)。

我建议你尝试一下MongoDB,它非常强大并且根据你的需要进行了优化,不应该抱怨你上面提到的要求。

您可以使用HDFS,但是当MongoDB(甚至是Cassandra)可以使用时,您并不需要它。