【问题标题】:Nutch 1.17 web crawling with storage optimizationNutch 1.17 网络爬取与存储优化
【发布时间】:2020-09-25 05:09:12
【问题描述】:

我正在使用 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.

【问题讨论】:

    标签: hadoop solr hdfs nutch nutch2


    【解决方案1】:

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

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

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

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

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

    可能在每个循环之后立即索引段。

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

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

    【讨论】:

    • 谢谢先生,您如何计算此目标的核心数?你说360核就够了,怎么找到的?
    • 根据我的经验,使用解析提取器 (fetcher.parse=true) 并且考虑到没有其他瓶颈(磁盘、RAM、网络或 Solr 索引),可以获取和处理 200k -每个核心和每小时 250k 页。使用 360 个内核,您每小时可以获得 70-9000 万页。听起来像是 100 万个域的合理吞吐量。我什至会从较小的集群开始 - 域大小可能不平衡,这会降低第一次爬网周期后的吞吐量。
    猜你喜欢
    • 2013-03-29
    • 1970-01-01
    • 1970-01-01
    • 2011-04-30
    • 2011-05-15
    • 1970-01-01
    • 1970-01-01
    • 2017-05-16
    • 1970-01-01
    相关资源
    最近更新 更多