Skip to main content
QUICK REVIEW

[論文レビュー] BUbiNG: Massive Crawling for the Masses

Paolo Boldi, Andrea Marino|arXiv (Cornell University)|Jan 26, 2016
Web Data Mining and Analysis参考文献 21被引用数 9
ひとこと要約

BUbiNG は、Java で実装された高スループットでオープンソースの完全分散型ウェブクローラーであり、ロックフリーなデータ構造と独創的なワークベンチデータ構造を活用することで、ホストおよびIPレベルの親切さを保証しながら、複数のエージェント間で線形スケーラビリティを達成する。1台の64コアのワークステーションで1秒間に10,000ページを超えるクローリングが可能であり、厳格なクローリングポリシーを尊重しながら、最小限の構成オーヘッドで大規模アーカイブクローリングを実現する。

ABSTRACT

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キューであるバーチャライザーを使用し、大規模クローリングを可能にすること。
  • 中央集権的な制御を完全に排除した設計により、エージェントが自律的に協調し、追加リソースに応じて線形にスケーリングできるようにすること。
  • 標準的なウェブプロトコルおよび robots.txt 標準と統合することで、ウェブクローリングのベストプラクティスに準拠すること。
  • リフレクションとユーザー定義フィルターを活用した動的構成により、柔軟なデータ処理パイプラインを実現すること。

実験結果

リサーチクエスチョン

  • RQ1複数のエージェント間で線形スケーリングを達成しながらも、厳密な親切さ制約を満たす分散型ウェブクローラーは、どのように設計できるか?
  • RQ2マルチスレッドでI/Oバウンドな環境において、高スループットのクローリングを実現するためのデータ構造と並行処理技術は何か?
  • RQ3完全分散型でオープンソースのクローラーは、スループットと設定性の面で、既存のオープンソースクローラーを上回ることができるか?
  • RQ4中央集権的な制御なしに、分散システムにおいてホストレベルでの幅優先訪問戦略をどのように維持できるか?
  • RQ5高い並列処理が、広く使われているI/Oおよびパースィングライブラリに潜在するバグをどのように露呈させるか?

主な発見

  • BUbiNG は、1台の64コア、64GBメモリのワークステーションで1秒間に10,000ページを超えるクローリングを達成し、1秒間に160MBを超えるデータを処理している。
  • エージェント数に応じて線形にスケーリングされ、中央集権的な制御なしに高スループットのクローリングが可能である。
  • ワークベンチデータ構造により、ホストおよびIPレベルの親切さ制約を満たす次のURLを定数時間で取得できる。
  • ロックフリーなデータ構造の使用により、並列処理が進むとスレッド競合が顕著に減少し、パフォーマンスが向上する。
  • BUbiNGにおける高い並列処理により、Apache HTTPクライアントやJericho HTMLパーサーなどの広く使われているライブラリに深刻なバグが露見され、診断に貢献した。
  • BUbiNG は、前例のない規模のデータセットを効率的にクローリングし、新たな大規模ウェブグラフ解析研究を可能にした。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。