2006-01-27

近況

グーグル株式会社の人が MapReduce (以下 MR) について解説をしてくれるというので聞いてきた. 私は友人が誘ってくれたのに便乗しただけの野次馬なので, どういう集りなのかはよく把握していない. 何かの勉強会ということらしい. 技術的には論文に書いてある以上の話はなかったが, 実際に使っている人の話を聞けたのは貴重だった. 忘れないうちにあれこれメモしておく. (発表に使ったスライドはウェブに公開されているものと同じだという. スライドがあるなんて気がつかなかった...)

まず MR のマスタープロセスは途中経過や統計情報を HTML として(?) 出力してくれる. そのスクリーションショットがスライドにあった. 進捗などがけっこうグラフィカルに表示される. こういうフィードバックの仕組みは開発生産性に影響しそうだ. (Tapestry の作者がいうところの "Feedback" 原則. )

MR は CPU intensive な仕事より I/O intensive なプログラム向いている. つまり実際に Google の仕事は I/O intensive なのだろう. だから入力の分割の仕方が性能に大きく影響するという. 小さくすることで並列度をあげるだけでなく, GFS と相性の良い切り方というのがあるらしい. MR はチューニングのために細かくパラメタを指定することができる. これも I/O insentive な問題ならではという気がする. CPU insentive な問題はまずコードを見直すもんね. これは聞いたわけではないけれど, 高速化はパラメタの調整が主で, コアな問題以外はコードレベルのチューンを あまりしなそうな気がする. あまり効かなそう. 実際, MR は python binding もあるというから, 規模でスケールすることや生産性の方が局所的な速度の改善よりも 重要だという認識なのだろう. Map や Reduce はそれら単体で資産化されているようなので, python ではそれを組み合わせる感じで使うのかもしれない. 知らんけど.

MR にファイルを渡すためにはファイルを分割したりなんだりと 前処理がいりそうなものだが, 社内で MR を使うアプリケーションが増えるにつれ, ある MR での出力を 他の MR で受けとるという生態系のようなものができて あまり苦労はないのという. かなり広く使われていることが伺える発言だった.

MR のプログラムは平均で 10 分くらいの実行時間らしい. 小さいプログラムだとスタートアップのコストが馬鹿にならないという. コードのバイナリをデータセンタにとばすところから分散環境をネゴするまで, たしかに結構時間がかかりそうだ. スタートアップにコストがかかるということは, MR はユーザとの対話的な部分には使われていないということになる. ユーザとの対話の中で大半の仕事を終えるというのが 私のウェブ・アプリケーションのイメージだから, MR を使った Google の仕事というのはその印象と大きく異る. 一般的な検索準備(インデクシング)の他に 何をしているのかはいまいち想像ができないが, そういう謎の大仕事が Google を特徴的な存在にしているようにも思える. そう考えると, 対話的な部分以外, つまり一般的なウェブのフレームワークの外側で やるべき仕事を探すことは, そこらへんにない 新しいウェブ・アプリケーションを考える上でヒントになりそう.

個々の MR プログラムは基本的に Map して Reduce したらおしまいになる. 複数の処理をストリーム風に処理したい場合は 最初のプログラムの出力を次のプログラムに渡すことで行う. たとえばあるインデクサは 24 個の MR プログラムから構成されているという. UNIX のシェルやパイプを連想する. あるプログラム同士は直列に, 別のもの同士は並列に実行する, というケースもあるらしい. そうした連携を実現するための, UNIX の shell に相当する仕組みが必要には ならないのだろうか. と質問したら, まあ何かがあるというようなことだった. なんなのかは知らないけれど... 色々妄想したくなる一方で, ファイル名を引き渡すだけの素朴な仕組みで十分にも思える. コードを書く部分だけではなく, それをどんな感じで動かしているのかにも興味がわく.

という感じで, 話も面白かったけどこっちが勝手に色々考えることの多い講演だった. 名刺入れを忘れたせいで名刺交換しそびれたのが悔しい.

IT 企業とハイテク企業

私は livedoor や楽天を IT 企業と呼ぶのにひどく抵抗があったのだけれど, 米国のコアな情報産業企業と比べると そこらへんのソフトウェア・ハウスやベンダは テクノロジそのものを作っていないという点で どこも livedoor なりと大差ないかもしれない. たとえばソフトウェア・ハウスがよく使う "技術力に自信がある" という言葉は, 新しいテクノロジを作りだすというより 何らかのテクノロジを扱うのに長けていることを示唆している気がする.

逆に独自のテクノロジをつくる仕事をしている Google や Intel, Microsoft のような会社は IT 企業というよりハイテク企業と呼ぶほうが相応しい.

そう考えるようになってから, IT という言葉への嫌悪感の正体がわかった気がして身が軽くなった. そして, 私はハイテクに憧れる IT のヒトなのだともわかった.