【发布时间】:2021-06-28 01:23:05
【问题描述】:
我正在使用 Apache Nutch(1.18 版本)抓取网页。
我认为添加更多 hadoop 节点会使 Nutch 抓取网页更快。
然而,事实并非如此。 3个datanode和5个datanode爬取几乎没有区别。
我也添加了--num-fetchers参数(值为5,因为我的hadoop数据节点的数量是5)。
请帮我找出问题所在。
【问题讨论】:
我正在使用 Apache Nutch(1.18 版本)抓取网页。
我认为添加更多 hadoop 节点会使 Nutch 抓取网页更快。
然而,事实并非如此。 3个datanode和5个datanode爬取几乎没有区别。
我也添加了--num-fetchers参数(值为5,因为我的hadoop数据节点的数量是5)。
请帮我找出问题所在。
【问题讨论】:
只有覆盖许多网站(主机/域)的广泛网络爬网才能从添加更多 Hadoop 节点中受益。如果只爬取少量站点,并行化不会让 Nutch 更快。 Nutch 配置为默认行为礼貌,并且不会并行访问单个站点,并且还在从同一站点的连续提取之间等待。
但有一些方法可以让 Nutch 更快地抓取单个站点。
为了使单个 fetcher 任务更快(并且更积极地从单个主机(或域,取决于 partition.url.mode 的值)获取),需要调整以下配置属性:fetcher.server.delay、fetcher.threads.per.queue 可能还有其他提取器属性。
要允许更多 fetcher 任务(Hadoop 节点)并行抓取同一个网站,URLPartitioner's getPartition method 需要修改,请参阅this discussion。
请注意,未经同意让 Nutch 更具攻击性可能会导致被抓取网站的管理员投诉并增加被阻止的可能性!
【讨论】: