春学期 授業ショッピングウィーク [分散システム]

今日は分散システムの授業を聞きにいけました。なんでの弁明投稿はまたいつか。

集中システムでできる事は、間違いなくそれでやった方が絶対いいよ。でも、下記の場合において分散システムが選択されます。分散版は10倍難しいから、本当やめとき。

分散システムを使う理由

  • 並列化
  • 堅牢性
  • 物理的に別場所
  • セキュリティ

なんで分散システムが難しいか

  • concurrency
  • partial failure (部分的な不具合)

マシンよりも人の方が(まだ)安い

パソコンをもう一台買えば、倍速になるならいいよね。コンピュータの方がプログラマより安いから。storageのスケーラビリティもあるよ。だから利得はあるよね。

演算とストレージ

で、演算と言っても、分散システムって結構ストレージの事が重要だったりする。

Fault Torerances 1000台あったら、毎日3台壊れてると思った方がいい。という事はたまーにおこる問題が、常に起こるよ。

で、それに対応するのが、NV storage(無発揮性ストレージ)とreplication(コピーしておく)

consistency

んで、ストレージって言ったら基本的には下記のAPIだよね。

  • put(k,v)
  • get(k) -> v

分散だと、いろんな場所に記録されているので、putとgetはいろんな意味が含まれるようになる。strong consistency とweakのがあるよ。最後にputした値をgetによって得られた事を保証しないのがweak。weakのが面白い。

…で第一回目の授業として

MapReduce

googleで使われたプログラムですよ。例えば、sortを巨大なデータにかけたい場合とか、それぞれエンジニアが別々にいちいち分散システム作っていたら時間の無駄。だから、解析内容(彼らはそれをappと行っていた)に集中してもらうために、分散演算をインフラとしてどのように組めばいいかという問題に対しての2004年の解答1

その解析エンジニアが使うAPIは二つ。MapとReduce。プログラミングではおなじみなので割愛。

宿題はMapReduceの分散インフラバージョンを作ってこいとのこと。ひぇー。


  1. ちなみに今はGoogle本社では使っていないらしい。 [return]