Sawzall
何か今さらながら、Sawzall。
Sawzallは言うまでもなく、Rob PikeさんがGoogleで作ったMapReduce処理に特化したドメイン固有言語。RDBMSにおけるSQLみたいなものか。Mapに相当するのがFilterで、Reduceに相当するのがAggregator。Aggregatorは言語に組み込みのものを使い(Sawzallレベルで記述できない)、プログラマはFilterを書く。MapReduceではkey-valueの組合わせを処理することになるが、Sawzallではkey-valueを意識する必要はない。例えば、入力ファイル(もちろんGFSから)に書かれた数値の合計を求めるプログラムはこんな感じ。
count: table sum of int; total: table sum of float; sum_of_squares: table sum of float; x: float = input; emit count <- 1; emit total <- x; emit sum_of_squares <- x * x;
文法がLimboっぽいね(PASCALっぽいとも)。汎用プログラミング言語じゃないので、できることは限られるけど。"table sum"って部分がsum aggregatorを使うよという宣言になる。emitって命令でaggregator totalに値を書き込んでいる。ちょっとチャネルっぽい。ここは入力ファイルのデータ(float)の個数分、実行される。つまり、1を加えることはカウンタを意味する。さらに、個々のaggregatorは並列で動くらしい。
複合データ型のファイル入出力には(最近オープンソース化された)プロトコルバッファを使う。
Hadoopプロジェクトには、Pigってのがあるんだけど、クローンを作るという訳ではなく、何だか別物だなぁ。
Googleを支える技術 ?巨大システムの内側の世界 (WEB+DB PRESSプラスシリーズ)
- 作者: 西田圭介
- 出版社/メーカー: 技術評論社
- 発売日: 2008/03/28
- メディア: 単行本(ソフトカバー)
- 購入: 47人 クリック: 1,166回
- この商品を含むブログ (374件) を見る