「Googleの凄さは,Failure-oblivious computing(エラー忘却型コンピューティング)のような新しい概念を,世界で初めて大規模に取り入れていることだと思います」--そう語るのは,楽天技術研究所の森正弥所長。4月に始めたクラウド・コンピューティングの取材も,随分と遠いところまで来たな--と筆者は思わずにはいられなかった。

 エラー忘却型コンピューティング(failure-oblivious computing)とは,米Massachusetts Institute of Technology(MIT)のMartin Rinard氏らが提唱した概念(Rinard氏らの論文)。メモリーに何らかのエラーが発生したとしても,プログラムの処理を停止するのではなく,エラーを無視して処理を継続するという考え方だ。楽天技術研究所の森氏は,こう例えながら説明する。

 データをキーと値(Value)の対として扱うハッシュテーブルのような手法を使用する場合に,あるキーに対応する値が2個存在するという「エラー」があると,通常のプログラムはそこで処理を停止する。それに対して,そのエラーを「無かったこと」にして(忘却して)処理を進めてしまうのが,エラー忘却型コンピューティングだ。

 通常のコンピューティングの場合,ACID(Wikipediaでの記述)という言葉に代表されるように,まずエラーを起こさないように,そしてエラーが起きたとしてもそれをカバーできるよう,様々な手段が講じられている。もしエラーがあった場合は,計算結果にエラーの影響を及ぼさないよう,プログラムの処理が停止する。

 一方のエラー忘却型コンピューティングでは,エラーがあっても「エラーがあった」というフラグを立てるだけで,処理はそのまま継続してしまうという。Googleでは,同社の分散データ処理技術「GFS」や「MapReduce」に特化した並列データ処理言語で,同社が独自に開発した「Sawzall」において,エラー忘却型コンピューティングの概念を実装したとしている(Sawzallに関するGoogleの論文)。

 楽天技術研究所の森氏は,Googleがエラー忘却型コンピューティングを採用した理由について「エラーを無視することによって,処理の大規模化,高速化を優先したのではないか」と推測する。前述のGoogleの論文でも,Googleが取り扱う大量のデータ(一説には1カ月で数百ペタ・バイトになると言われる)の中には,時として開発者の予想しないような無効なデータが混ざる可能性があり,それらに対応するためには,エラー忘却型コンピューティングのようなアイデアが適していると指摘している。

クラウドを支える大規模分散処理技術

 エラー忘却型コンピューティングは,データの一貫性や永続性を極力重視する既存のエンタープライズ・コンピューティングとは,全く逆の概念である。MITのRinard氏らによる論文が発表されたのも2004年のことで,概念自体が新しい。そのような斬新な概念をGoogleが大規模に取り入れ,既にそういったコンピューティング環境を実稼働できているのは,GoogleがGFSやMapReduceといった分散データ処理技術を,自前で開発しているからである。

 GFS(Google File System)とは,Googleがデータセンターで運用する数十~数百万台のPCサーバーを使って,大量のデータを高速に分散格納するための技術だ。MapReduceは,大量に分散格納されたデータを処理するための技術となる。両者の関係を端的に説明すると,「コンピューティングとは全て『データ処理』で成り立っている。『データ』を司っているのがGFSで,『処理』を司っているのがMapReduce」(楽天技術研究所の森氏)となる。GFSやMapReduceの詳細は西田圭介氏の著作「Googleを支える技術 」が非常に詳しいので,是非ともご一読頂きたい。

 GFSとMapReduceのオープンソース版が,米Yahoo!が実証実験を繰り返している「Hadoop」となる。森氏が所属する楽天でも,新世代のレコメンド・エンジン(ある商品に対するお勧め商品をリストアップする機能)の運用基盤として,Hadoopを採用した。

 楽天ではHadoopを使用することで,同社が扱う何百万という種類の商品情報と,何千万人単位のユーザーの購買履歴を掛け合わせて「お勧めの商品」をリストアップするという巨大なデータ処理を,大量のPCサーバーに分散処理することが可能になった。楽天技術研究所の森氏は「Hadoopの良いところは,スケール・アウトが容易なこと。サーバーを追加した分だけ,処理能力がリニア(線形関数的)に増加する。少数のサーバーで始めたところ16日かかっても終了しなかった計算が,Hadoopと大量のサーバーを組み合わせることで10時間まで短縮できた」と語る。

 GFSやMapReduce,Hadoopといった分散データ処理技術は,GoogleやAmazon,Yahoo!,楽天のような大規模Webアプリケーションを提供する事業者にとって,生命線になっている。Amazonも,GFSに相当する分散データ格納技術として「Amazon Dynamo」を開発しているし,楽天も現在,分散データ格納技術として「Roma」を,分散処理技術として「Fairy」を開発中である。

 図1は,クラウド・コンピューティングの世界で使われている,あるいは開発が進んでいる分散データ処理技術を筆者がまとめたものだ。

図1●クラウド・コンピューティングの世界で使われている,あるいは開発が進んでいる分散データ処理技術
[画像のクリックで拡大表示]

 図にある「memcached」に代表される分散メモリー技術とは,複数のサーバーが搭載する物理メモリーを連携させて,ネットワーク上に巨大な物理メモリーを作り出す技術だ。データベースのキャッシュとして利用することで,三階層のWebアプリケーションのパフォーマンスを大幅に向上できる。Microsoftも2009年前半にサービスを開始するデータベース・サービス「SQL Server Data Services」の運用基盤として,memcachedに似た「Velocity(開発コード名)」を開発中である(関連記事:【TechEd 2008】分散メモリー・キャッシュ技術「Velocity」は2009年上期のリリース予定)。

この先は会員の登録が必要です。有料会員(月額プラン)は初月無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら