お使いのブラウザは最新版ではありません。最新のブラウザでご覧ください。

CNET Japan ブログ

オープンソース検索エンジン「Nutch」の皮算用

2004/06/10 02:58
  • このエントリーをはてなブックマークに追加

プロフィール

umeda

シリコンバレーで経営コンサルティングを行なう傍ら、ベンチャーキャピタリストとしても活躍する梅田望夫さんが、IT業界の先を読むのに役立つ英文コンテンツを毎日紹介していきます。これを読めば、英語と業界動向を読む力が同時に身に付くはず(このブログの更新は2004年12月30日で終了しました)。
ブログ管理

最近のエントリー

Nutchというオープンソースのサーチエンジンプロジェクトの話は、本欄で以前に取り上げたことがある(2003年8月23日「Googleを取り巻く苛酷な競争」など)。

ACM Queueのサーチ特集号で、「Building Nutch: Open Source Search」という論文が、NutchプロジェクトのMike CafarellaとDoug Cutting(2人の経歴については原文をご参照)によって書かれた。

アルゴリズムからコンピューティングインフラに広がる競争

GoogleとYahooの熾烈な競争を見てもわかるように、サーチエンジンの競争は、単にサーチエンジンのアルゴリズムだけの問題ではなく、サーチを執行するコンピューティングインフラも含めた競争であることが、既に明らかになっている。

そんな中、オープンソースというやり方で新しいサーチエンジンを作ることの意義や成算を、Nutchプロジェクトのリーダーたちはどう考えているのだろうか。そんな問題意識を持って、この論文を読んでみたいと思う。

冒頭では、このプロジェクトを始めた理由が書かれている。

「Search engines are as critical to Internet use as any other part of the network infrastructure, but they differ from other components in two important ways. First, their internal workings are secret, unlike, say, the workings of the DNS (domain name system). Second, they hold political and cultural power, as users increasingly rely on them to navigate online content. When so many rely on services whose internals are closely guarded, the possibilities for honest mistakes, let alone abuse, are worrisome. Further, keeping search-engine algorithms secret means that further advances in the area become less likely. Much relevant research is kept behind corporate walls, and useful methods remain largely unknown.」

「By enabling more people to run search engines, and by making the code open, we hope search algorithms will become as transparent as their importance demands.」

サーチエンジンがインターネットにおける重要なコンポーネントであることは誰もが認めるところだが、DNSのような他のコンポーネントと明らかに違う点として、サーチエンジンは、(1)どう動いているのかが秘密になっている、(2)政治的・文化的なパワーを有する、という2つのポイントを挙げている。そしてだからこそ、サーチエンジンの閉鎖性を打破することに意味がある、とNutchリーダーたちは考えている。

「Much of the challenge in designing a search engine is making it scale. Writing a Web crawler that can download a handful of pages is straightforward, but writing one that can regularly download the Web's nearly 5 billion pages is much harder. Further, a search engine must be able to process queries efficiently. Requirements vary widely with site popularity: a search engine may receive anywhere from less than one to hundreds of searches per second.」

そしてサーチエンジンの挑戦のほとんどが、「making it scale」、つまり検索対象やユーザの問い合わせ量が増えていくのに応じてシステムをスケールアップしていくことに関連したものだ、という認識を示している。このあたりの認識は当たり前のようでけっこう新しいもので、98年から99年にかけてGoogleがやり始めたことの一部分だけ(特にアルゴリズム)を見て、多くのアルゴリズムの研究者たちがGoogleを過小評価したことを思い出してほしい。

かさむハードウェアのコスト

そしてだからこそ、他のオープンソース・プロジェクトと違って、カネがかかる。

「Finally, unlike many software projects, search engines can have high ongoing costs. They may require lots of hardware that consumes lots of Internet bandwidth and electricity.」

Nutchを実装していけば、ハードウェアのコストがかさむ。どうするのか。

LOOP誌の連載で、NPOであるNutch.orgのボードメンバーでもあるMitch Kaporに話を聞いたとき

「Q ナッチの資金調達に不安は?

A 現在、投資を募っていますが、巨額の資金を必要とするプロジェクトではありません。サーバを立ち上げて多くのトラフィックを処理しようとしているわけではありませんから。おそらくナッチが研究以上のものに発展したとき、それを元にビジネスを構築する人間が別に出てくるでしょう。」

こんなやり取りをしたわけだが、果たしてMitchの言うようにプロジェクトは資金がなくてもうまくいくのだろうか。(論文の原文は、3章立てになっていて、1章の後半から2章にかけて、Nutchを作ることについての詳細な解説があるので、そこに興味がある方は是非、原文をあたってください。)

「One objection the Nutch project often hears is that search is simply too resource-hungry to be a good open source project.」(第3章)

「サーチはリソース・ハングリーなプロジェクトだから、Nutchはオープンソースに向かないんじゃないの、とよく言われるけれど」以降で、それに対する議論を展開していて面白い。まずはNutchのコスト計算をしている。

「Nutch deployments use two classes of machines: back-end machines, for crawling, database, link analysis, and indexing tasks; and front-end machines, which perform searches and serve search results. A typical back-end machine is a single-processor box with 1 gigabyte of RAM, a RAID controller, and eight hard drives. The filesystem is mirrored (RAID level 1) and provides 1 terabyte of reliable storage. Such a machine can be assembled for a cost of about $3,000. One such back-end machine is required for every 100 million pages. Thus, to maintain an index of 1 billion pages requires 10 back-end machines, or about $30,000 in hardware.」

バックエンド・マシンが「crawling, database, link analysis, and indexing tasks」、フロンドエンド・マシンが「searches and serve search results」を担当。

まずバックエンド・マシンであるが、1台3000ドルのバックエンド・マシン(1GB-RAMとRAIDコントローラと8台のHDDがついたシングルプロセッサ)で、1億ページごとに必要。10億ページのインデックスを維持するためには、これを10台、つまり3万ドルのシステムが必要だ。

「A typical front-end machine is a single-processor box with 4 gigabytes of RAM and a single hard drive. Such a machine can be assembled for about $1,000. The query-handling capacity of front-end machines varies, depending on how much each must search. For example, if each front-end machine is given 25 million pages to search, then each can perform about two searches per second. Thus, a 100-million-page index could be searched with four front-end machines ($4,000) while a 1-billion-page index requires 40 front-end machines ($40,000), but such configurations could still handle only two searches per second. In this case, access to a disk-resident index is the primary bottleneck.」

フロンドエンド・マシンは1台1000ドル程度のものでよい(4GB-RAMと1台のHDDつきのシングルプロセッサ)。毎秒2サーチならば、1億インデックスのサーチならフロントエンド4台(4000ドル)。10億インデックスならば、40台(4万ドル)。この場合にはディスクに置いたインデックスへのアクセスがボトルネックになる。

「Query handling is more cost effective when primary index structures fit within RAM. In particular, if each front-end machine is required to handle only 2 million pages, then each can handle perhaps 50 searches per second. In this configuration a 100-million-page index would require 50 front-end machines ($50,000) and a 1-billion-page index would require 500 machines ($500,000). This is half the cost per query of the first case. Here the bottleneck is primarily the CPU. Further search software optimizations can make this configuration even more cost effective.」

フロントエンドを増やし、インデックスをRAMに置き、サーチ性能を向上させると、フロンドエンドにその約10倍のコストがかかる。

「Note that as traffic increases, front-end hardware quickly becomes the dominant hardware cost. 」

トラフィックが増えてコストがうなぎのぼりになっていくのはフロンドエンド側。ことほどさように、サーチエンジンは、ハードウェア・システムとアルゴリズムが一体となって、コストを強く意識しながら、実装されていくものなのである。そしてさらに、ハードウェア初期コストに加えて、ホスティング、電気代などなどの維持費が馬鹿にならない。詳細は原文をご参照。

ソフトウェアに専念するNutch

ただ、以上のようなコスト計算をした上で、Nutchリーダーたちは言う。

「In summary, although it's true that Google and Yahoo probably cost a lot of money to operate, many Web search engines may not serve nearly as much traffic and need not search nearly so many pages. In a world with lots of deployed search engines, the vast majority will serve small audiences. The costs are also well within reach for research groups, governmental departments, and small- to medium-size companies.」

GoogleやYahooは別だが、普通のサーチ環境では、トラフィックも対象ページもそう多くないから、何とかこのコストは研究グループや政府機関、中小企業でも賄えるのではないかと。そう、Nutch自身は、ソフトウェアに専念するのである。

そして、Nutchの最大の課題は、リーダーたちもこう認めているように、

「It's not clear how to use the open source programming style for something that's so tied to the deployment, but we need to do it.」

こうしたdeployment(実装配備)と密接な関係のある仕事に、オープンソース・スタイルのプログラミングがうまく使えるのかどうか、ということになるのだろう。

数多くのベンチャーの中で成功するのが一握りであるのと同じように、オープンソース・プロジェクトだって、成功するものの陰に多くの失敗プロジェクトがある。Nutchは果たしてどうなるのか。Nutchの新しい挑戦には、これからも注目していきたいと思う。

※このエントリは CNET Japan ブロガーにより投稿されたものです。朝日インタラクティブ および CNET Japan 編集部の見解・意向を示すものではありません。
運営事務局に問題を報告

最新ブログエントリー

個人情報保護方針
利用規約
訂正
広告について
運営会社