0

我正在使用 Nutch 1.17 来抓取超过百万个网站。我必须为此执行以下操作。

  1. 一次将爬虫作为深度爬虫运行,以便它应该从给定的(100 万)域中获取最大的 URL。第一次,您最多可以运行 48 小时。
  2. 在此之后,在 5 到 6 小时后使用相同的 100 万个域运行爬虫,并且只选择那些域上的新 URL。
  3. 作业完成后,在 Solr 中索引 URL
  4. 稍后,不需要存储原始 HTML,因此节省存储空间(HDFS),仅删除原始数据并维护每个页面元数据,以便在下一个作业中,我们应该避免再次重新获取页面(在其预定时间之前) )。

没有任何其他处理或后期分析。现在,我可以选择使用中等大小的 Hadoop 集群(最多 30 台机器)。每台机器都有 16GB RAM、12 核和 2 TB 存储。Solr 机器也具有相同的空间。现在,为了保持上述状态,我对以下内容感到好奇:

a. How to achieve above document crawl rate i.e., how many machines are enough ? 
b. Should I need to add more machines or is there any better solution ?
c. Is it possible to remove raw data from Nutch and keep metadata only ?
d. Is there any best strategy to achieve the above objectives.
4

1 回答 1

1

一个。如何达到以上文件爬取率,即多少台机器就够了?

假设选择了对同一域的连续提取之间的礼貌延迟:假设每个域每分钟可以提取 10 个页面,最大值。抓取速度为每小时 6 亿页 ( 10^6*10*60)。具有 360 个核心的集群应该足以接近这个速率。能否在 48 小时内彻底爬取一百万个域,取决于每个域的大小。请记住,提到的每域每分钟 10 个页面的抓取速度,只能10*60*48 = 28800在 48 小时内获取每个域的页面。

C。是否可以从 Nutch 中删除原始数据并仅保留元数据?

一旦段被编入索引,您就可以将其删除。CrawlDb 足以确定在 100 万个主页之一上找到的链接是否是新的。

  1. 作业完成后,在 Solr 中索引 URL

也许在每个周期后立即索引段。

湾。我需要添加更多机器还是有更好的解决方案?d。是否有实现上述目标的最佳策略。

很大程度上取决于域的大小是否相似。如果它们显示出幂律分布(这很可能),那么您的域很少有数百万页(几乎没有穷尽爬网)和只有几页(最多几百页)的长尾域。在这种情况下,您需要更少的资源,但需要更多的时间来达到预期的结果。

于 2020-09-28T20:45:45.833 回答