2015-04-12 70 views
3

我跟着文章:https://wiki.apache.org/nutch/NutchTutorial并设置了apache nutch + solr。但是我想澄清一下,如果我理解了正确的工作步法。Apache Nutch步骤说明

1)。注入:在这一部分,apache从给定的seed.txt中读取url列表,将url与regex-urlfiler正则表达式进行比较,并使用受支持的url更新crawldb。 2)。生成:bin/nutch生成抓取/ crawldb抓取/分段 Nutch从crawldb抓取URL并创建准备提取的URL的抓取列表。它需要像-topN和时间间隔等输入,然后在分段下创建具有当前时间的目录。

我相信,前两步没有互联网互动。一切都在本地发生。

问:提取列表保存在哪里? 3)。提取:bin/nutch抓取/分段/

抓取run fetchList并从给定URL获取内容(和URL)并将其保存在某处。

问:是否读取URL的整个给定页面(文本+其他URL)?问:Nutch保存获取的数据? 4)。解析:bin/nutch解析抓取/段/

它解析条目。

问:在这里解析是什么意思? 问:我在哪里可以找到这一步的结果? 5)。 bin/nutch updatedb crawl/crawldb crawl/segments/

当这完成后,Nutch使用提取结果更新数据库。

问:是否仅使用解析数据更新crawldb或其他内容?

请清除我的疑惑。

回答

4

您对第一步和第二步的假设是正确的。但是,您需要了解整个工作流程是如何发生的。当Nutch提取网址时,它会将网页数据或图像等数据作为二进制获取,并使用名为Content的类将其作为抓取数据存储在区块中。

稍后,在解析步骤中,将存储的内容对象解析为另一种数据格式,称为ParsedData,其中包含数据的文本以及其外链(如果可用)。 ParsedData被放回到下一批作业中处理的区域。在这一步之后,crawldb更新作业,这里来自上一步的链接将放回到crawldb中,以更新页面排名和Web链接详细信息。

在索引步骤中,来自分段中的分析数据的信息被构造为字段。 Nutch使用一个名为“NutchDocument”的分类来存储结构化数据,nutch文档被放回到下一步要处理的分段中。最后,Nutch发送Nutch文档来索引存储,比如Solr或Elasticsearch。这是最后一步,在这个阶段,如果您不想再次将它们发送到索引存储,您可以删除这些段。换句话说,这是数据的后续

种子列表 - >注入url - >抓取项目(简单的url) - >内容 - >解析数据 - > nutch文档。

我希望能回答你的一些问题。

+0

感谢您的回答。它真的帮助我理解。 你能指点我所有的输出crawlItem,Contents,ParsedData和NutchDocument的位置吗? – user3089214

+0

这些类都在Nutch核心源代码下。不过,Nutch使用hadoop RecordReader和Writer来读写这些数据格式。您需要阅读nutch源代码以了解如何阅读这些材料。但是,您可以使用bin/nutch命令轻松浏览每个步骤中存储的数据。 – ameertawfik

+0

谢谢@ameertawfik。我想更好地理解hadoop。你能引导我正确的书,博客或任何教程? – user3089214