Apache Nutch 步骤讲解
Apache Nutch steps explaination
我已关注文章:https://wiki.apache.org/nutch/NutchTutorial 并设置了 apache nutch +solr。但我想澄清一下我对坚果步骤的理解是否正确。
1).注入:在这部分,apache 从给定的 seed.txt 中读取 url 列表,将 urls 与 regex-urlfiler regex 进行比较,并使用支持的 urls 更新 crawdb .
2).生成:bin/nutch生成crawl/crawldbcrawl/segments
Nutch 从 crawdb 中获取 URLs 并创建 URLs 的获取列表,这些列表已准备好获取。它需要像 -topN 和 timegap 等输入,然后在段下创建包含当前时间的目录。
我相信,在前两个步骤中没有与互联网互动。一切都在本地发生。
问:获取列表保存在哪里?
3).获取:bin/nutch获取crawl/segments/
获取 运行 fetchList 并从给定的 URLs 中获取内容(和 URLs)并将其保存在某处。
问:fetch 是否读取 URL 的整个给定页面(文本 + 另一个 URLs)?
问:Nutch 将获取的数据保存在哪里?
4).解析:bin/nutch 解析 crawl/segments/
它解析条目。
问:这里的解析是什么意思?
问:我在哪里可以找到这一步的结果?
5). bin/nutch updatedb crawl/crawldb crawl/segments/
完成后,Nutch 使用获取的结果更新数据库。
问:它是仅使用解析后的数据更新 crawdb 还是还使用其他内容?
请解开我的疑惑
你对第一步和第二步的假设是正确的。但是,您需要了解整个工作流程是如何发生的。当 Nutch 获取 url 时,它会以二进制形式获取网页数据或图像等数据,并使用 class 命名的 Content 将它们作为抓取数据存储到片段中。
稍后,在解析步骤中,存储的内容对象被解析为另一种数据格式,称为 ParsedData,其中包括数据文本及其外链(如果可用)。 ParsedData 被放回 segements 以在下一个作业批处理中处理。这一步之后是 crawdb 更新作业,这里将上一步的链接放回 crawdb 以更新页面排名和 Web 链接详细信息。
在索引步骤中,段中已解析数据的信息被构造成字段。 Nutch 使用一个名为 "NutchDocument" 的 classed 来存储结构化数据,将 nutch 文档放回段以供下一步处理。最后,Nutch 将 Nutch 文档发送到索引存储,如 Solr 或 Elasticsearch。这是最后一步,在此阶段,如果您不想再次将段发送到索引存储,则可以删除这些段。换句话说,这是data
的后续
种子列表 -> 注入 url -> 抓取项目(简单的 url) -> 内容 -> 解析的数据 -> nutch 文档。
我希望这能回答你的一些问题。
inject 和 generate 前两步的答案是写入。
我正在逐步回答您的问题:
fetch-list 是要在本次爬行迭代中获取的 url 列表。您可以使用 generate.max.count 属性 配置获取列表的大小。生成的获取列表存储在其相应段内的 crawl_generate 目录中。但是,您将无法读取它的二进制格式。
在生成步骤之后是获取步骤,其中获取列表中的 url 是从网络中获取的。它们存储在段的crawl_fetch目录中。
获取 url 后,将解析内容以获取外链、内容、元数据等。解析步骤的输出在 crawl_parse 内, parse_data, parse_text 段目录。
一旦解析完成,我们就会用最近获取的 url 中新发现的链接更新 crawldb。 Crawldb只包含url及其对应的信息,如fetch_status、score、modified_time等,你可以把它想象成一个存储url信息的数据库。
当新的抓取迭代开始时,来自 crawdb 的新添加的 url 被插入到 fetch-list 中并继续该过程。
我已关注文章:https://wiki.apache.org/nutch/NutchTutorial 并设置了 apache nutch +solr。但我想澄清一下我对坚果步骤的理解是否正确。
1).注入:在这部分,apache 从给定的 seed.txt 中读取 url 列表,将 urls 与 regex-urlfiler regex 进行比较,并使用支持的 urls 更新 crawdb .
2).生成:bin/nutch生成crawl/crawldbcrawl/segments Nutch 从 crawdb 中获取 URLs 并创建 URLs 的获取列表,这些列表已准备好获取。它需要像 -topN 和 timegap 等输入,然后在段下创建包含当前时间的目录。
我相信,在前两个步骤中没有与互联网互动。一切都在本地发生。
问:获取列表保存在哪里?
3).获取:bin/nutch获取crawl/segments/
获取 运行 fetchList 并从给定的 URLs 中获取内容(和 URLs)并将其保存在某处。
问:fetch 是否读取 URL 的整个给定页面(文本 + 另一个 URLs)? 问:Nutch 将获取的数据保存在哪里?
4).解析:bin/nutch 解析 crawl/segments/
它解析条目。
问:这里的解析是什么意思? 问:我在哪里可以找到这一步的结果?
5). bin/nutch updatedb crawl/crawldb crawl/segments/
完成后,Nutch 使用获取的结果更新数据库。
问:它是仅使用解析后的数据更新 crawdb 还是还使用其他内容?
请解开我的疑惑
你对第一步和第二步的假设是正确的。但是,您需要了解整个工作流程是如何发生的。当 Nutch 获取 url 时,它会以二进制形式获取网页数据或图像等数据,并使用 class 命名的 Content 将它们作为抓取数据存储到片段中。
稍后,在解析步骤中,存储的内容对象被解析为另一种数据格式,称为 ParsedData,其中包括数据文本及其外链(如果可用)。 ParsedData 被放回 segements 以在下一个作业批处理中处理。这一步之后是 crawdb 更新作业,这里将上一步的链接放回 crawdb 以更新页面排名和 Web 链接详细信息。
在索引步骤中,段中已解析数据的信息被构造成字段。 Nutch 使用一个名为 "NutchDocument" 的 classed 来存储结构化数据,将 nutch 文档放回段以供下一步处理。最后,Nutch 将 Nutch 文档发送到索引存储,如 Solr 或 Elasticsearch。这是最后一步,在此阶段,如果您不想再次将段发送到索引存储,则可以删除这些段。换句话说,这是data
的后续种子列表 -> 注入 url -> 抓取项目(简单的 url) -> 内容 -> 解析的数据 -> nutch 文档。
我希望这能回答你的一些问题。
inject 和 generate 前两步的答案是写入。
我正在逐步回答您的问题: fetch-list 是要在本次爬行迭代中获取的 url 列表。您可以使用 generate.max.count 属性 配置获取列表的大小。生成的获取列表存储在其相应段内的 crawl_generate 目录中。但是,您将无法读取它的二进制格式。
在生成步骤之后是获取步骤,其中获取列表中的 url 是从网络中获取的。它们存储在段的crawl_fetch目录中。
获取 url 后,将解析内容以获取外链、内容、元数据等。解析步骤的输出在 crawl_parse 内, parse_data, parse_text 段目录。
一旦解析完成,我们就会用最近获取的 url 中新发现的链接更新 crawldb。 Crawldb只包含url及其对应的信息,如fetch_status、score、modified_time等,你可以把它想象成一个存储url信息的数据库。
当新的抓取迭代开始时,来自 crawdb 的新添加的 url 被插入到 fetch-list 中并继续该过程。