Googleを支える技術 ‾巨大システムの内側の世界 (WEB+DB PRESSプラスシリーズ)

この本はGoogleのPublicationを紹介する本で、著者自身のアイディアは全くない。だが、巨人Googleの中身がどうなっているかは多くの人が興味を持っていると思われるので、むしろこの割り切り方はよい。

GoogleといえばPageRankによって、評価の高いページを返すという手法でブレイクしたが、ここに関わるような検索やInformation Retrievalのアルゴリズム自体はほとんど解説なし。Googleが検索でブレイクした後の大規模化に焦点が当てられており、これに関わる研究を俯瞰するにはよい本である。特に分散ストレージ/データ処理で解説されるGFS/MapReduce等の技術は、データの持ち方と処理の枠組みを限定することで耐故障性と分散処理を実現しており、割り切り具合が絶妙だと思った。

1. Googleの誕生

初期のGoogleについて。単語、アンカーテキスト、PageRankGoogleの検索の特徴としている。本当はもっと複雑なはずだし、今では当たり前の技術なんだけど、これらの手法が検索を一般的なものにしたのは確か。検索エンジンの基本構成も紹介。

2. Googleの大規模化

検索エンジンの大規模化。BarrelsからShardへと、インデックスの持ち方を変更するという単純な方法で、インデックスサーバの分散化を実現。大規模化に伴い、検索エンジンの構成も変化(Google Web Server + インデックスサーバ + ドキュメントサーバ)。

3. Googleの分散ストレージ

分散データ処理を支えるGoogle File System(GFS)、Bigtable, Chubby(分散ロックサービス)。耐故障をとてもまじめに考えているのは、実サービスを持っていればこそという感じ。性能データも興味深い。

4. Googleの分散データ処理

GFS/MapReduceBigtable/Sawzallの話。GFS/MapReduceは思わず使ってみたくなるが、Yahoo!が中心となってHadoopというオープンソースが開発されている模様。HadoopJavaで書かれているが、Hadoop Streamingと組み合わせると、Perlなどでも使えるらしい。

Hadoop Streaming

Kansai.pm での発表資料 (Hadoop Streaming で MapReduce) - naoyaのはてなダイアリー

Hadoopを使った機械学習ライブラリの開発もあり。

Apache Mahout - Overview

5. Googleの運用コスト

この規模のデータセンタに直接携わる人は本当に少ないと思うが、規模が変わるとハード費用、電力、設備コストのいずれにせよ、笑い話のようで笑い話ではない問題が出てくる。そういうスケールの大きな話の一方で、地道に、PCのうち、電力を無駄にしているユニットはどれだとか、ハードディスク故障と温度の関係なども地道に調査した結果があったりと、面白い。

6. Googleの開発体制

この辺の内容に魅せられてGoogleは恵まれているとか言う人が多いが、本当にこんな中で仕事したら心も体ももちません、というほうが正しい気が…

この本で紹介されたGoogleのPublicationは次のページを参照。