Nutch并将爬网数据保存到Amazon S3

时间:2011-09-12 17:18:43

标签: solr amazon-s3 hadoop nutch

我正在尝试评估Nutch / Solr / Hadoop是否适合我的任务。

PS:以前我试图整合Nutch(1.4)和Hadoop以了解它是如何工作的。

这是我想要实现的整体目标, a)从种子URL开始,抓取并解析/保存数据/链接     - 无论如何,Nutch爬行器都会这样做。

b)然后,能够从Java客户端查询已爬网的索引    ---(可能使用SolrJ客户端)

c)因为Nutch(从1.4.x开始)已在内部使用Hadoop。我将安装Hadoop并在nutch中配置 - **。xml

d)我希望Nutch将已爬网的索引保存到Amazon S3以及Hadoop以将S3用作文件系统。    这甚至可能吗?甚至值得吗?

e)我在其中一个论坛上看到,在Nutch 2.0中,有一个使用GORA的数据层可以将索引保存到HBase等。我不会在2.0版本到期时使用。 :-( 有没有人建议抓住2.0“inprogress”主干并开始使用它,希望迟早能够获得一个释放的lib?

PS:我还在试图弄清楚Nutch如何/何时/为何/在内部使用Hadoop。我只是找不到任何书面文档或教程。在这方面的任何帮助也非常感谢。

如果你正在读这一行,那么非常感谢你阅读这篇文章到这一点: - )

1 个答案:

答案 0 :(得分:1)

Hadoop本身可以使用S3作为其底层文件系统。在使用EMR或您自己的/第三方Hadoop AMI在EC2中运行Hadoop时,我使用这种方法获得了非常好的结果。在EC2之外使用Hadoop时,我不建议使用S3作为底层文件系统,因为带宽限制可能会抵消Hadoop给你的任何性能提升。适用于Hadoop的S3适配器由Amazon开发,是Hadoop核心的一部分。 Hadoop就像HDFS一样对待S3。有关将Hadoop与S3一起使用的详细信息,请参阅http://wiki.apache.org/hadoop/AmazonS3

Nutch旨在作为Hadoop集群上的作业运行(处于“部署”模式时),因此不会在其分发中包含Hadoop jar。但是,因为它可以作为Hadoop作业运行,所以它可以访问Hadoop支持的任何底层数据存储,例如HDFS或S3。在“本地”模式下运行时,您将提供自己的本地Hadoop安装。在“部署”模式下完成爬网后,数据将存储在分布式文件系统中。建议您等待索引完成,然后将索引下载到本地计算机进行搜索,而不是在DFS中搜索性能原因。有关使用Nutch和Hadoop的更多信息,请参阅http://wiki.apache.org/nutch/NutchHadoopTutorial

关于HBase,我有很好的使用经验,但不适合您的特定用例。我可以想象,对于随机搜索,Solr可能比HBase更快,功能更丰富,但这是值得商榷的。 HBase可能值得一试。在2.0发布之前,您可能想要编写自己的Nutch-to-HBase连接器,或者只是坚持使用Solr。