グーグルが構築した大規模システムの現実、そしてデザインパターン(1)~MapReduce編

2010年8月24日

グーグルが「Evolution and Future Directions of Large-Scale Storage and Computation Systems at Google」(グーグルにおける、大規模ストレージとコンピュテーションの進化と将来の方向性)という講演を、6月に行われたACM(米国計算機学会)主催のクラウドコンピューティングのシンポジウム「ACM Symposium on Cloud Computing 2010」で行っています。

グーグルはどのようにして大規模分散システムを構築してきたのか、そして、そこからどのようなことを学んだのかが語られていますし、後半では大規模分散システムのデザインパターンという、非常に興味深いノウハウも公開している、非常に情報量の多い講演です。

その講演の内容を、全部で4つの記事、MapReduce編、BigTable編教訓編デザインパターン編に分けて、紹介したいと思います。

講演を行ったのはグーグルのJeffrey Dean氏。1999年にグーグルに入社し、現在はSystems Infrastructure Groupのフェローです。

信頼性はソフトウェアによって実現される

グーグルのコンピュータ環境のシステムやソフトウェアとその革新について紹介しよう。また、大規模分散システムのための技術についても説明していく。

fig

これがオレゴン州ダレスにあるグーグルのデータセンター。ここで多くのサーバが稼働している。

fig

サーバにはコモディティハードウェアが使われ、ハードディスクかFlashドライブを内蔵している。これを、各サーバへのスイッチを備えたラックに収納する。ラックそれぞれはセントラルネットワークへのアップリンクを持つ。

fig

しかし、これらのリアルなマシンは、リアルな問題を引き起こす。それは、ファイバーケーブルが切断されるといったデータセンター間ネットワークの問題から、ラックやルータの故障、各サーバの故障まで、さまざまなレベルで起きる。

そこで、重要なポイントは「信頼性はソフトウェアによって実現される」ということだ。

fig

グーグルのクラスタで実行されている処理とは?

グーグルのクラスタソフトウェアについてみていこう。

クラスタは数千台のマシンで構成されている。サーバOSはLinuxで、そのうえに分散ファイルシステム(Google File Systemもしくは次世代のGFSであるColossus)のためのチャンクサーバ、ジョブのためのスケジューリングスレーブが稼働している。これらは、スケジューリングマスターとGFSマスターによってコントロールされている。

fig

GFSとジョブスケジューリングのほかに、グーグルで一般的に使われているのは、分散処理のMapReduceや分散データストアのBigtableなどだ。

fig

大規模分散処理の一翼を担うMapReduce

MapReduceについて紹介しよう。MapReduceはプログラミングモデルの一種で、大規模並行処理をプログラマがシンプルに記述できる。どのマシンがどの処理を実行するか、といった細かいことをライブラリが隠蔽してくれる。

fig

MapReduceは、Mapで必要な情報を取り出し、シャッフルとソートをしてReduceに渡し、ここで統合、要約、フィルタリング、変換といた処理を行うものだ。

Google Mapをどうやってレンダリングしているか、というサンプルでMapReduceの処理を紹介しよう。

いちばん左のInputで、世界の道路区分のグラフ情報を入力する。その右のMapステージで、そのデータをタイル(四角形)に分解し、道路の情報がどのタイルに合致するかを見つけていく。例えばシアトルのどの場所のタイルか、といったことだ。

Reduceでは、レンダリングのために必要な情報がタイルごとに集まっているので、ここでjpgなどのイメージにレンダリングする。

fig

そしてMapReduceでは、Mapタスク、Reduceタスクがすべて並列に実行できる。ただし、もしも処理が非常に大量な場合、この部分のネットワークとディスクの部分がボトルネックとなる。

fig

グーグル内部でMapReduceをどれくらい使っているか、という統計。おおざっぱにってエクサバイト級のデータを処理している。

fig

MapReduceはたんにシーケンシャルファイルを読んでいるのではなく、B-treeなど構造的なデータをデータソースとして読んでいる。

fig

次回は現在グーグルが利用しているデータストアのBigTableと、さらに大規模なマルチデータセンター対応を目指して構築中のデータストアであるSpannerなどについて。

次回「グーグルが構築した大規模システムの現実、そしてデザインパターン(2)~BigTable編」に続く。

本記事で紹介している、2010年6月に行われたACM(米国計算機学会)主催のクラウドコンピューティングのシンポジウム「ACM Symposium on Cloud Computing 2010」の基調講演では、グーグルのほかにセールスフォース・ドットコムとFacebookが登場しています。

セールスフォース・ドットコムの講演内容は、以下の3本の記事で詳しく紹介しましたので、ぜひご覧ください。


このエントリーをはてなブックマークに追加 Bookmark this on Delicious     fig Follow Me  fig RSS

タグ : Google , MapReduce , クラウド , データセンター

次の記事
グーグルが構築した大規模システムの現実、そしてデザインパターン(2)~BigTable編
前の記事
[速報]デルの3PAR買収に「待った! 1.3倍で俺が買う」とヒューレット・パッカード

Loading...

Blogger in Chief

photo of jniino Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。新しいオンラインメディアの可能性を追求しています。
詳しいプロフィール


Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
RSSリーダーで : Feed





アクセスランキング - 過去7日間

  1. 特許庁の基幹システムはなぜ失敗したのか。元内…
  2. マイクロソフトの責任者が語る「われわれはどの…
  3. 特許庁の基幹システム失敗の背景にある、日本に…
  4. みんなはどんなテスト技法を使っているの? J…
  5. ソフトウェアテストの30年前と30年後(前編…
  6. マイクロソフトでは「開発プロセスのすべてにテ…
  7. ソフトウェアテストの30年前と30年後(後編…
  8. セールスフォース社長がつぶやいたエコポイント…
  9. 「絶対落ちないシステムを作れ」という要件に、…
  10. 客が本気にならないといいシステムができない。…
  11. HTTP 2.0はグーグルのSPDYがベース…
  12. ソフトウェアテストの近未来を話そう(前編)~…
  13. ソフトウェアテストの近未来を話そう(後編)~…
  14. グーグルはあれほど多くのソフトウェアのテスト…
  15. 電子書籍フォーマットの本命、「EPUB」をい…

最新記事 10本

バックナンバー



アルファブロガー・アワード2010受賞 Publickeyはアルファブロガー・アワード 2010を受賞しました! いつもご愛読ありがとうございます。









blog comments powered by Disqus