我正在使用StormCrawler和Elasticsearch进行概念验证,以仅爬网一个具有几个主机的域-一个包含许多页面的域。有没有办法告诉Stormcrawler不要将主机或域的所有URL分组在一个喷口中?
我按照Youtube教程进行了设置,并将出水嘴设置为10个并行度,但据我通过Storm UI得知,它仅使用1。如何使单个URL传播域,甚至是所有喷口上的一台主机?
谢谢! 吉姆
答案 0 :(得分:0)
要对每个主机的URL进行分区,您的配置应具有 partition.url.mode:“ byHost” ,这是默认值。这样会将属于不同主机的URL放入不同的分片中,并且将使用更多的spout实例。
来自同一主机的URL放在相同的分片中以增强礼貌。如果要从主机并行获取,只需将 fetcher.threads.per.queue 设置为所需的任何值。如果网站是您自己的,这是可以接受的,但如果网站属于其他人则显然是不礼貌的。即使您继续按主机分片,这也可以正常工作。
当然,您可以通过将 es.status.routing 设置为false来完全禁用路由。无论主机名如何,URL都将由ES分片,并且将使用所有分片和喷口。但是,这意味着对礼貌没有严格的控制。