0

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

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

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

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

MongoDB 会是一个好的解决方案吗?这篇文章让我很担心,但听起来他们的要求确实超出了我的需要。

我也对 Cassandra 和 HDFS 进行了一些研究,但我不确定这些解决方案是否对我的问题来说太过分了。

至于查询数据,只要能得到一个url和一个日期的具体页面数据就可以了。数据也大多是写入一次,读取一次,然后存储以备将来可能读取。

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

4

2 回答 2

1

假设每个 HTML 页面 50kB,每天 15GB 可以让我们每天处理 300.000 多个页面。每月约1000万。

MongoDB 肯定会很好地处理这个数据量。关于它的局限性,完全取决于您打算如何读取和分析数据。鉴于数据量,您可以利用 map/reduce 功能。

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

于 2013-05-23T21:50:29.010 回答
0

我不确定当你使用 Cassandra 给你这些错误时你做了什么部署场景..可能需要更多的调查才能知道是什么导致了问题。您需要追溯错误以了解其来源,因为根据上述要求,Cassandra 应该可以正常工作,并且不应在 5 小时后停止(除非您有存储问题)。

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

您可以使用 HDFS,但您并不真正需要它,而 MongoDB(甚至 Cassandra)可以做到。

于 2013-05-23T22:41:56.603 回答