BT

Julien Nioche氏が語るStorm Crawler - Apache Stormをベースとするオープンソースのクローラパイプライン

| 作者: Alexandre Rodrigues フォローする 0 人のフォロワー , 翻訳者 吉田 英人 フォローする 0 人のフォロワー 投稿日 2017年1月16日. 推定読書時間: 4 分 |

原文(投稿日:2016/12/15)へのリンク

DigitalPebbleのディレクタで,Apache NutchWebクローラプロジェクトのPMCメンバ兼コミッタであるJulien Nioche氏が,StormCrawlerについての講演を行なった。StormCrawlerはストリーミングフレームワークであるApache Stormをベースとした,分散Webクローラ開発のための再利用可能なコンポーネントのコレクションだ。

InfoQはプロジェクトの中心的コントリビュータであるNioche氏にインタビューして,StormCrawlerに関する詳細と,同じ領域に属する他のテクノロジとの比較について聞くことにした。

InfoQ: StormCrawlerのメリットを活用できるのは,クローリング/スクラッピングパイプラインのどのステージなのでしょう?

Nioche: StormCrawlerはスケジューリングやフェッチ,構文解析,インデックス付けといったパイプラインのクローリングに関して,すべての主要ステージを実装するためのコードとリソースを提供します。Apache SolrElasticsearchMySQLApache Tikaといった,一般的に使用されているプロジェクト用のモジュールに加えて,XPathsitemaps,URLフィルタリング,言語識別などでデータ抽出を行なう,さまざまな拡張機能を提供しています。

InfoQ: Apache NutchやPythonのScrapyのような,他のクローリングテクニックと比べた場合はどうですか?

Nioche: StormCrawlerは元々,私がApache Nutchを使用した経験の結果から生まれたものですので,コンセプト(FetcherBoltの設計,URL,Parseフィルタなど)やや初期の実装には多くの共通点があります。Nutchの機能を実装していますし,Nutch 2.xのように,さまざまなストレージバックエンド(HBaseCassandraなど)を使用することができます。

StormCrawlerとNutchの最も大きな違いは,後者がApache Hadoopをベースとしている(そこから生まれたものでもある)ため,バッチ駆動である点です。URLフェッチングやコンテント解析やインデックス付けが,それぞれ別のステップで実行されます。このため,フェッチ時にはネットワーク使用率は高いがCPUやディスクの使用率が比較的低く,構文解析やインデックス付けではその逆になるのです。

一方のStormCrawlerは,ストリーム処理フレームワークであるApache Stormをベースとしているので,すべてのオペレーションを同時に実行することができます – URLは絶えずフェッチ,構文解析,インデックス付けされるため,クロールプロセスがより効率的であるとともに,バッチ指向では一般的な長時間のワークロードもありません。Nutchとは違い,コンテンツをディスクへ永続化する必要もありません(ただし必要であれば可能)。StormCrawlerは,低レイテンシが必要であったり,あるいはストリーム結果(ページビジットのようなユーザ生成イベント)としてURLが渡される場合など,広い範囲のユースケースの実装を容易なものにします。

Scrapyとの比較では,StormCrawlerがスケーラブルな分散環境で動作するのに対して,ScrapyにはFronteraのような分散クローリングを行なうプロジェクトもあるものの,シングルプロセスです。

StormCrawlerの分散処理と信頼性(他にUIやメトリクスフレームワークやログなども)を担っているのはApache Stormです。

ユーザフレンドリを目指している点,データスクレイピングの優れたソリューションである点については,ScrapyとStormCrawlerは同じです。

要するに,NutchのスケーラビリティとScrapyの使いやすさを組み合わせたものがStormCrawlerである,と言えるでしょう。

InfoQ: クロールのワークロードはI/O集中型になりがちですが,Apache SparkApache Flickと比較して,Apache Stormをストリーミングフレームワークに使用することのメリットは何でしょう

Nioche: Apache Stormの設計とコンセプトはシンプルかつ効率的です。それに当時は,Sparkが存在していませんでした。Spark Streamingはデータをマイクロバッチで処理しますし,宣言的なスタイルは私のニーズに最適とは言えなかったのです。

クローリングの主な課題のひとつにポライトネス(politeness)があります。これは,クローラがWebサーバにヒットする頻度によって定義されるものです。一般的なストリーミングアプリケーションとは違い,目的は可能な限り早くメッセージを転送することではなく,スループットを最適に保ちながら丁寧に処理することです。それには精細なコントロールが必要であり,Apach Stormのメカニズムがその目的を果たしているのです。

InfoQ: 今後のリリースに関するロードマップは,どのようになっていますか?

Nioche: StormCrawlerの開発主体はコミュニティです。最新の安定版リリースは1.2で,Stormの1.xバージョンをベースとしています。次回のリリースには言語識別モジュールが含まれる他,最新のElasticsearch 5に対応する予定もあります。大きな機能としては,AJAXベースのサイトで使用されるようなSeleniumベースのプロトコル実装を,どこかの時点で用意したいと思っています。

 
 

この記事を評価

関連性
スタイル
 
 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

特集コンテンツ一覧

.NETの派生を理解する

Wayne Citrin 2018年7月18日 午前3時44分

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT