| Su | Mo | Tu | We | Th | Fr | Sa |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Google: A Behind-the-scenes Look
http://norfolk.cs.washington.edu/htbin-post/unrestricted/colloq/details.cgi?id=274
googleのJeff Dean氏がワシントン大学で行った講義の様子。
googleって外部であまりこういうプレゼンをしないという印象があり、
わりと貴重な映像かと思います。
以下、適当に内容をまとめます。
講義全体を貫くテーマは、「巨大なデータをどうやって扱うか」ということ。
googleが持っているWebページの数は40億に達しており(講義では40億と言っているけど、
最近の発表ではもっと大きな数字だった筈)、データの容量にすると何十TBにもなる。
それだけの規模のデータを扱うには、巨大なストレージと高速なネットワーク、
そして特別なソフトウェアが必要になる。
・ハードウェア、ネットワーキング
-基礎的なプラットフォームを廉価に構築する
・分散システム
-たくさんのマシンを使って信頼性の高いシステムを構築する
・アルゴリズム、データ構造
-新しくてinterestingな方法で、能率的にデータを処理する
・機械学習、情報検索
-巨大なデータを分析することにより、検索結果のクオリティを上げる
・ユーザインターフェース
-affectiveなインターフェースをデザインする
・その他
(たぶんみなさんご存じの通り)googleでは廉価なマシンを沢山つかってシステムを構築している。
なぜ廉価なマシンを使うのかというと、単純に、コストパフォーマンスが良いから。
高価な高信頼性サーバと廉価なマシンとで、コスト当たりの処理性能を比べると、
圧倒的に後者のほうが有利になる。
もちろん廉価なマシンは信頼性で劣っていて壊れやすいんだけど、
そこはソフトウェア(OSやミドルウェアのレイヤ)でケアしてやる。
重要なのはreplication and redundancy(複製と冗長性)だ。
スライドには
「Fault-tolerant software makes cheap hardware practical」
という一文が赤字で書かれている。
googleのインデックスは小さく分割され、"shards"という単位で管理される。
shardsは必ず複製されて複数台のマシンに置かれる。
また、PageRankの高いshardsはより多くのマシンに置かれる。
googleのサーバは大きくindex serversとdoc serversに分かれる。
index serversではインデックスのshardsを、doc serversでは
ドキュメント本体のsharedを管理する。
googleのフロントエンドサーバがユーザから検索クエリを受け取ると、
index servers -> doc serversと問い合わせをおこない、
次いで挿入される広告(AdSense)のチェックやスペルチェックといった
副次的な問い合わせを行い、処理結果を作成する。
この一連の処理は、1000台を超えるサーバが連携して行われる。
その処理時間はおよそ0.25秒である。
googleを支えるソフトウェア(In-house solutions):
・Google File System(GFS)
・Global Work Queue(GWQ)
・MapRedce
GFS。
巨大な分散ストレージシステム。構成されるマシンはmasterとchunk serverに分けられ、
masterではメタデータ(どこにどのデータがあるかという情報)のみを持つ。
実際のデータを持つのはchunk server。データは"chunk"と呼ばれる64MBのデータ片に分割されて格納される。
個々のchunkは複製されて3つのchunk serverに置かれる。
また、クライアントとのデータの転送は、chunk serverとの間でダイレクトに行う(いちいちmasterを経由しない)。
書くのが面倒になってきたのでひとまずここまでで。
それにしてもこれくらいの速度で話されるとやはり辛い。
ちゃんと英語を聞き取れる耳がほしい。
続くかなあ。

