第 318 回 PTT のお知らせ


日時:2006年 1月26日(木) 18:30 から


場所:東京大学工学部 6号館(本郷キャンパス) 3階セミナー室A


    あまりわかりやすくはありませんが(失礼),交通機関の情報は「本郷アク
    セスマップ」(http://www.u-tokyo.ac.jp/campusmap/map01_02_j.html)を
    御覧下さい. キャンパス内地図は「本郷キャンパス工学部 6号館」
    (http://www.u-tokyo.ac.jp/campusmap/cam01_04_07_j.html)を参照して
    下さい.

    ◆本郷三丁目駅(地下鉄丸ノ内線,地下鉄大江戸線),東大前駅(地下鉄南北線)
    からの場合:
    本郷通りを通ってまず東京大学正門(キャンパス内を向くと安田講堂が見えます)
    を目指します.キャンパスに入り,安田講堂へと続く道の左側を並行にはしる道を
    進みますと,左手にあります.

    ◆根津駅(地下鉄千代田線)からの場合:
    綾瀬方向にある改札から地上に出て,薬屋と和服屋・写真現像店とに挟まれている
    言問通りの坂を登ります(吉野屋がある方向ではありません).坂を登りつめて
    少し進むと,なだらかに右へと道が折れていくあたりが信号のある三叉路となって
    います.そこを左へと下っていくと弥生門が右手にあります.
    弥生門を入ると右斜め前へと登っていく道がありますので,それを進んで下さい
    (途中左側で工事を行なっているはずです).その道を登りつめた左手にあるのが
    工学部 6号です.

    ◆学バス(東大構内バス停)からの場合:
    バス停で降りてバスの進行方向に対して左方向へと進んで下さい(安田講堂に
    向かっているはずです).安田講堂を通り過ぎる前,もしくは安田講堂にぶつかっ
    たら,右へと進んで下さい.左側には小柴名誉教授の記念植樹,右側には理学部
     1号の大きな建物をそれぞれ見ながら進んでいるはずです.その通りのつきあたり
    (工学部 3号にぶつかります)を左へと登っていくと,その道を登りきった右手に
    あります.


話者:
林 芳樹 (Google)


話題:
MapReduce ー大規模クラスタでの簡単なデータ処理ー

概要:


MapReduce とは大量のデータを処理するためのプログラミングモデルと
その実装のことである。ユーザは入力データのキー・値のペアから
中間データのキー・値のペアを生成する map 関数と、その中間データから
同じキーを持つ値を統合するreduce 関数からなる。このモデルを使って
多くの実用的な問題を解くことが可能である。

この関数型的な形式で書かれたプログラムは自動的に並列化されて、
普通のマシンで構成された大規模クラスタで実行される。
ランタイムシステムが入力データの分割、スケジューリング、マシンの不具合や
マシン間の通信を行う。これにより、並列や分散システムの経験のない
プログラマでも簡単に大規模分散システムを使うことができるようになる。

MapReduce は非常にスケーラビリティが高く、普通の MapReduce プログラムは
テラバイト単位のデータを千台単位のマシンで処理する。また、プログラマに
とって、MapReduce プログラムは非常に書き易い。
本発表では、この Google で毎日数多く実行されている MapReduce を紹介する。


第 318 回 PTTメモ

参加者:60名程度

和田英一(IIJ),青木俊介,喜多慎弥(チームラボ(株)),小川宏高(産総研),
森岡靖太(東芝),紀信邦(KLS研究所),伊知地宏(ラムダ数教研),
西村祥治,樋口直志,福井眞吾(NEC),末永匡(未来検索ブラジル),
古川陽((株)ACCESS),森大二郎(NTT-IT),田中二郎(日本橋学館大),
井原伸介,卜部昌平,多田好克,寺田実,早坂良太,丸山一貴(電気通信大),
小林弘明(元電気通信大),粕川正充(お茶の水女子大),三神京子(津田塾大),
山口文彦(東京理科大),須賀淳(芝浦工業大),石井学(首都大学東京),
笹田耕一,並木美太郎(東京農工大),石畑清(明治大),長井歩(群馬大学),
齋藤宏治(元豊橋技科大),〓見敏行 (東京工業大),荒川博志,荒木伸夫,
大川徳之,苅谷和俊,鈴木圭輔,高橋周平,田中哲朗,鳥居栄太郎,松崎公紀,
松田一孝,室田朋樹,森田直幸,筧 一彦(東京大),江渡浩一郎,佐々木崇郎,
首藤一幸

    ※〓は「雨(金鳥)」 (雨かんむりに金鳥で一文字)

質疑応答:


- shuffleの前にはreduceを行なわないのか.

Combiner として、shuffle の前に同じマシン上のデータだけに
reduce 相当の処理を行うことはできる。

- (右肩上がりのグラフでの)countの数は何を指しているか.

プログラムの数。

- distributed sortはどのレベルで行なっているのか.

Reduce が行われるときに、key の順番に sort されるので、
そこで勝手に sort される。

- dataの行き先を決める方法は.それを決める仕事を担うマシンが存在するか.

Map class の partitioning function が担当するので、各マシンがそれぞれの
key がどこに行くかを計算している。

- mapの最中にマシンが壊れたらどうなるか.

完了したものも、実行中のものも含め、そのマシンで実行されていた
task は他のマシンで再実行される。

- mapとreduceのマシン数のバランスはどう決めるのか.

両方ともプログラマが指定する。

- 「2000台あったら5000個使っている」という話しに関して,
 reduceの処理でプロセッサ数以上のタスクに分ける理由は何か.

(task の粒度の話)
マシンが落ちたときに再実行する量が減る。ある reduce がたまたま時間が
かかったときに、他の早く終わったマシンが残りの reduce を実行することが
できるので負荷分散の性能が上がる。

- 遅いタスク,というのはどういう理由で発生するのか.

たまたま計算 intensive なデータが集まるとか、特定の key にデータが
集中するとかがある。また、例にあったようにマシンの設定ミスという
珍しいものもある。

- パイプライン処理で,mapとshuffle,shuffleとreduceなどは同時に行なえるのか.

map と shuffle は同時に行える。shuffle と reduce は同時には行えない。

- 2回やって失敗,という際の「2回」は経験則か.

おそらく。

- どの程度のスケーラビリティが得られるか.
- スケーラビリティについて参考となる資料はあるか.

自分の知る限りではないと思う。

- MapReduceのインデキシングなどに対する実戦投入の時期はいつか.

MapReduce ができたのが2003年で、2004年の終わりには MapReduce を
使っていた indexer が動いていたはずなので、その間のどこか。

- コードの実際例が見たい.

(ウェブでこれを見ている人は、MapReduce の論文の最後を見れば
同じものが出ている)

- 中間データ表現は文字列のみか.

はい。Struct とか、int も含め文字列でないものは mapper で serialize して
reducer で deserialize することになる。

- mapだけを繰返し適用したい場合はどうすればよいか.

おそらく reducer に identity 関数を使って、その結果に対して MapReduce を
もう一回実行するというのがよく使われているはず。

- mapに副作用を持たせたい場合は.

可能だが、その場合は自分で task が失敗したときの consistency を取る
必要がある。

- 複数のプロセッサを管理するための仕組みは存在するか.

?? どんな質問だったか覚えていないので、回答も...

- 職場の雰囲気はどうか.

自由で明るい感じ。エンジニアのスペースは大学院の研究室を広くしたような感じ。

- GFS blockの大きさが不便に思えることはあるか.

特にない。

- データの順番を意識したプログラムを書きたい場合にどうできるか.

この質問には答えなかったような... 続けて聞かれた、データの順番を
意識したようなプログラムを書きたいことはあるか、という質問には、
特にない、と答えた気がする。

- インデキシングが終了したものとして,検索を行なう際の仕組みはどの
 ようになっているか.そこではMapReduceは使われているか.

検索は普通の検索が行なわれている。転置索引から該当する
ドキュメントを探してスコアリングみたいな感じ。MapReduce は基本的に
データをバッチ処理するための仕組みなので、こういう場面では
使われていない。

- クラスタ内にデータはいつロードされるのか.

普通は GFS 上に既にデータが存在している。

- HDDがデータで埋まっていっぱいになってしまうことはないか.

(質問は GFS 上の、だったような記憶が)
GFS にマシンを追加すれば容量はどんどん増えていくので、普通は
そういうことはない。

- GFSサーバとMapReduceを行なうマシンとは分けて管理されているのか.

そういう場合もあるし、分けられていない場合もある。