我正在实施一个网络抓取工具,每天需要抓取并存储大约15GB +的HTML文件。每日数据量也可能增长。
我打算尽可能长时间地存储已删除的数据,但是也希望为每个页面存储完整的HTML文件至少一个月。
我的第一个实现将HTML文件直接写入磁盘,但很快就遇到了inode限制问题。
接下来我尝试使用Couchbase 2.0作为键/值存储,但Couchbase服务器在网络抓取写入5-8小时后会开始返回Temp_OOM错误。重新启动Couchbase服务器是唯一的恢复途径。
MongoDB是一个很好的解决方案吗? This article让我担心,但听起来他们的要求超出了我的需要。
我也看了一下Cassandra和HDFS,但我不确定这些解决方案对我的问题是否有点过分。
至于查询数据,只要我能获得网址和日期的特定页面数据,就会很好。数据也大部分是一次写入,一次读取,然后存储以备将来可能的读取。
任何有关存储大量HTML文件的建议都会有所帮助。
答案 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)可以使用时,您并不需要它。