微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

关于StormCrawler中并行性的影响

如何解决关于StormCrawler中并行性的影响

我目前正在从事基于Storm Crawler的项目。我们有固定数量的带宽来从Web上获取页面。我们有8个工作线程,对于拓扑中不同的Bolt(即50),其并行性提示值很大。因此创建了很多线程来获取页面。项目中增加的fetch_error数量增加的parallelism_hint之间是否有任何关系?如何确定Storm Crawler中parallelism_hint的合适值?

解决方法

并行性提示不是应无差别地应用于所有螺栓的东西。

理想情况下,每个工人需要一个FetcherBolt实例,因此在您的情况8中。正如您可能在WIKI中阅读或在conf中看到的那样,FetcherBolt处理内部线程以进行获取。这由配置 fetcher.threads.number 确定,该配置在原型的配置中设置为50(假设这是您用作起点)。

使用太多的FetcherBolt实例会适得其反。最好改为更改 fetcher.threads.number 的值。如果您有50个Fetcher实例,其默认线程数为50,那将为您提供2500个提取线程,这可能超出您的可用带宽。

正如我之前提到的,每个工人需要1个FetcherBolt,每个螺栓的内部读取线程数取决于您的带宽。对此没有硬性规定,这取决于您的情况。

不过,我观察到的一个常数是解析螺栓与Fetcher螺栓的比率。通常,每个提取程序有4个解析器可以正常工作。在部署模式下运行Storm并检查UI中解析器螺栓的 capacity 值。如果该值等于或大于1,请尝试使用更多实例,看看它是否影响容量。

在任何情况下,并非所有螺栓都需要相同水平的平行度。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。