[논문 리뷰] 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 집약적 패킷 수신 스레드에서의 스레드 경쟁을 제거하기 위해 잠금이 없는 데이터 구조를 활용하여 확장성과 처리량을 향상시킨다.
- 호스트 및 IP 수준에서 예절을 보장하면서도 상수 시간 내에 다음 URL을 효율적으로 검색할 수 있도록 워크벤치 데이터 구조를 도입한다.
- 메모리에 올라가지 않는 URL을 처리하기 위해 메모리 매핑된 디스크 기반 FIFO 큐인 가상화기(Virtualizer)를 사용하여 대규모 크롤링을 가능하게 한다.
- 중앙 집중식 조정 없이 완전히 분산된 아키텍처를 설계하여 에이전트가 자율적으로 협력하고 자원 증가에 따라 선형적으로 확장되도록 한다.
- 표준 웹 프로토콜과 robots.txt 표준을 통합하여 웹 크롤링 최적 실천 방침을 준수한다.
- 반사(reflection)와 사용자 정의 필터를 통한 동적 설정을 지원하여 민첩한 데이터 처리 파이프라인을 구현한다.
실험 결과
연구 질문
- RQ1다수의 에이전트 간 선형 확장성을 달성하면서도 엄격한 예절 제약 조건을 유지할 수 있는 분산 웹 크롤러는 어떻게 설계할 수 있는가?
- RQ2멀티스레드 및 I/O 집약적 환경에서 고성능 크롤링을 가능하게 하는 데이터 구조와 동시성 기법은 무엇인가?
- RQ3완전히 분산된 오픈소스 크롤러는 처리량과 구성 가능성 측면에서 기존 오픈소스 크롤러를 뛰어넘을 수 있는가?
- RQ4중앙 집중식 조정 없이도 분산 시스템에서 호스트 수준에서 너비 우선 순회 전략을 유지할 수 있는가?
- RQ5고도로 병렬화된 환경에서 널리 사용되는 I/O 및 파싱 라이브러리의 잠재적 버그가 얼마나 드러날 수 있는가?
주요 결과
- BUbiNG는 단일 64코어, 64GB 워크스테이션에서 초당 10,000페이지 이상을 처리하며, 160MB/s 이상의 데이터를 처리한다.
- 에이전트 수에 따라 선형적으로 확장되어 중앙 집중식 조정 없이도 고성능 크롤링이 가능하다.
- 워크벤치 데이터 구조는 호스트 및 IP 수준의 예절 제약 조건을 준수하면서도 상수 시간 내에 다음 URL을 검색할 수 있도록 한다.
- 잠금이 없는 데이터 구조의 사용으로 스레드 경쟁이 크게 감소하여 고병렬 환경에서 성능 향상을 이룬다.
- BUbiNG의 고병렬성 환경은 Apache HTTP 클라이언트 및 Jericho HTML 파서와 같은 널리 사용되는 라이브러리에서 임계적인 버그를 노출시키고 진단하는 데 기여했다.
- BUbiNG는 이전에 보지 못한 규모의 데이터셋을 성공적으로 크롤링하여 새로운 대규모 웹 그래프 분석 연구를 가능하게 하였다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.