2009年10月30日金曜日

ついでに Sawzall も勉強中

http://labs.google.com/papers/sawzall.html

これは予定外だけど、スクリプト言語らしいので一応読んでみる。

メモ:
  • 型のある script language ... お、いいね。そういうの、好き。
    • ex. input の sum:
      • total: table sum of int;
      • x: float = input;
      • emit total <- x;
  • domain specific language ですかね。
    •  今朝こんな言語作ってみたんだけどどうかな、、、なんてやってんだろうね。楽しそう。
  • GFS
  • MapReduce ... execution model
    • Sawzall runs in the map phase. ↓これ
      • map(in_key, in_value) -> list(out_key, intermediate_value)
    •  The aggregators run in the reduce phase. ... emit してるやつ
  •  at the statement level Sawzall is a fairly ordinary language
    • それほどでも
  • 統計っぽい香りのする The Aggregators
    • Collection ... Ruby の collect{|x| x}
    • Sample ... 無作為抽出
    • Sum, Maximum ... [].sum, [].max
    • Quantile ... これは統計っぽいな。R (S-plus) みたい
    • Top, Uniq etc.
  • 無駄なトラフィックが出ないように最適化します!!
    • Sum だったら subtotal でいいよね。とか。
    • いや最適というか、Sum のインプリがそうなっているってだけか。
  • indexed aggregator
    • out_key もうまく使いましょ。
  • saw の起動
    • プログラム, queue, 入力ファイル指定、出力ファイル?指定。至極ストレートな感じ。
    • /gfs/cluster1/... だって。 /gfs/で普通の Linux file system と区別してる?
    • reduce phase の worker 数指定もできる。
  • Implement
  • Chaining ... お、、とおもったら、ちょっと薄いな。
  • Domain-specific Property
    • def ... nil?
    • Quantifier ... まあそうね。ruby と R を比較対象にしてるもんで、さほど感動はない。
  • Performance
    • script にしてはがんばってるな。こんだけ強い型付きでだったら C++ とかと比べても良さそうだ。え、10倍遅い。まあ、、、いいか。 C++へのconverter とか簡単そうだけど。まあ、ボトルネックは script じゃあないってことだな。
感想:
  • まあ、DSL の例ですかね。
  • 特に何かを期待していた訳ではないけど、、、、まあ、型があるのはいいね。
  • このへんは人(プログラマ)との接点(インタフェース)なわけで。機能性能が全てって訳ではないわな。
  • GFS とか BigTable に限らず、分散DBを扱うってのはこういう感じなんですかね、、。
    • DBって殆ど使ったことないんだよな、、、、。ちょっとは勉強するかな。

0 件のコメント:

コメントを投稿