[论文解读] BUbiNG: Massive Crawling for the Masses
BUbiNG 是一个用 Java 实现的高吞吐量、开源、完全分布式的网络爬虫,通过利用无锁数据结构和一种新颖的工作台数据结构,在主机和 IP 级别实现礼貌访问策略,从而在多个代理之间实现线性可扩展性。它在单台 64 核心机器上实现了每秒超过 10,000 页的爬取速度,同时严格遵守爬取策略,并以极低的配置开销支持大规模归档爬取。
Although web crawlers have been around for twenty years by now, there is virtually no freely available, opensource crawling software that guarantees high throughput, overcomes the limits of single-machine systems and at the same time scales linearly with the amount of resources available. This paper aims at filling this gap, through the description of BUbiNG, our next-generation web crawler built upon the authors' experience with UbiCrawler [Boldi et al. 2004] and on the last ten years of research on the topic. BUbiNG is an opensource Java fully distributed crawler; a single BUbiNG agent, using sizeable hardware, can crawl several thousands pages per second respecting strict politeness constraints, both host- and IP-based. Unlike existing open-source distributed crawlers that rely on batch techniques (like MapReduce), BUbiNG job distribution is based on modern high-speed protocols so to achieve very high throughput.
研究动机与目标
- 解决现有开源、高吞吐量、完全分布式的网络爬虫在系统资源增加时无法实现线性扩展的问题。
- 通过近乎严格的广度优先访问策略实现归档爬取,以减少网络图分析中的采样偏差。
- 在保持高性能的同时,确保符合主机级和 IP 级礼貌约束。
- 提供高度可配置、可扩展的框架,支持自定义过滤器和用户定义的处理流水线。
- 通过支持比以往爬虫大几个数量级的数据集,促进研究社区的大规模数据收集。
提出的方法
- 采用无锁数据结构,消除 I/O 密集型获取线程中的线程竞争,提升可扩展性和吞吐量。
- 引入工作台数据结构,以常数时间高效获取下一个待获取的 URL,同时在主机和 IP 级别强制执行礼貌策略。
- 使用虚拟化器——一种内存映射的磁盘 FIFO 队列——处理超出主内存容量的 URL,实现大规模爬取。
- 系统设计为完全分布式,无需中心化协调,允许代理自主协调并随资源增加线性扩展。
- 与标准 Web 协议及 robots.txt 标准集成,确保符合网络爬取的最佳实践。
- 通过反射和用户自定义过滤器支持动态配置,实现灵活的数据处理流水线。
实验结果
研究问题
- RQ1如何设计一种分布式网络爬虫,使其在多个代理之间实现线性可扩展性,同时保持严格的礼貌约束?
- RQ2哪些数据结构和并发技术能够在多线程、I/O 密集型环境中实现高吞吐量爬取?
- RQ3完全分布式的开源爬虫是否能在吞吐量和可配置性方面超越现有开源爬虫?
- RQ4在无中心协调的分布式系统中,如何在主机级别保持广度优先访问策略?
- RQ5高度并行化在多大程度上会暴露广泛使用的 I/O 和解析库中的潜在错误?
主要发现
- BUbiNG 在单台 64 核心、64 GB 的工作站上实现了每秒超过 10,000 页的处理速度,数据吞吐量超过 160 MB/s。
- 系统随着代理数量的增加线性扩展,实现在无中心协调下的高吞吐量爬取。
- 工作台数据结构实现了常数时间的 URL 获取,同时满足主机和 IP 级别的礼貌约束。
- 使用无锁数据结构显著减少了线程竞争,提升了高并行环境下的性能。
- BUbiNG 中的高并行性暴露并协助诊断了广泛使用库(如 Apache HTTP 客户端和 Jericho HTML 解析器)中的关键错误。
- BUbiNG 成功爬取了前所未有的大规模数据集,为新的大规模网络图研究提供了支持。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。