mapreduceを使った並列化 20111212

14
MapReduce ををををををを 2011-12-12 をを をを

Upload: marony

Post on 28-Jun-2015

399 views

Category:

Technology


4 download

DESCRIPTION

もう流行り終わったMapReduce(Hadoop)の概要

TRANSCRIPT

Page 1: MapReduceを使った並列化 20111212

MapReduce を使った並列化2011-12-12 多田 篤志

Page 2: MapReduceを使った並列化 20111212

目次•MapReduce ・ Hadoop とは?•なぜ今並列化なのか?•従来の並列化と問題点•Map とは?•Reduce とは?•MapReduce の仕組み•MapReduce のメリット•MapReduce のデメリット•MapReduce の活用ポイント

Page 3: MapReduceを使った並列化 20111212

MapReduce ・ Hadoop とは?• MapReduce…Google に 2004 年に導入された大量

データを多数のコンピュータで処理する仕組み• Hadoop…MapReduce の論文を元に Apache

Software Foundation が Java で実装したフリーウェア

多数のコンピュータ

数千のコンピュータ

大量のデータ

テラ・ペタバイト級

ビッグデータ分散コンピューティング

Page 4: MapReduceを使った並列化 20111212

なぜ今並列化なのか?•CPU 性能の限界

▫クロック数は伸びず、コア数の増加•インフラの低コスト化

▫クラウド・仮想化で大量のコンピュータの導入が可能に

•BToC の台頭▫大量のユーザ・大量のデータ

Page 5: MapReduceを使った並列化 20111212

従来の並列化の問題点

データ

処理 1

処理 2

処理 3

処理 4

処理 n

競合の回避

処理・データの分散

複数マシンの管理

複雑ペタバイト数千の処理

Page 6: MapReduceを使った並列化 20111212

Map とは?• MapReduce は関数型言語 (Scala, Haskel, Erlang…) の

map 処理と reduce 処理からアイデアを受けたものですデータ

1リスト A 2 3 4 5 6 7 8 9 10

関数

multiply x = x * 3

Map 処理

map multiply リスト A

3結果リスト 6 9 12 15 18 21 24 27 30

データ全てに同じ処理を施す

Page 7: MapReduceを使った並列化 20111212

Reduce とは?データ

1リスト A 2 3 4 5 6 7 8 9 10

関数

add x y = x + y

Reduce 処理

reduce add リスト A

55

データを集計するもの

※ 畳み込み関数 ( 実際には左から畳み込むものと右から畳み込むものがある )

(add 1 (add 2 (add 3 (add 4 (add 5 (add 6 (add 7 (add 8 (add 9 10))))))))) の結果

※ fold とも言う

Page 8: MapReduceを使った並列化 20111212

MapReduce の仕組み (1) ~全体像~

マスターサーバ

分散ファイルシステム (HDFS)

入力 結果

※ データの流れをコントロール

Map 処理 Reduce 処理

Sort & Shuffle 処理

Page 9: MapReduceを使った並列化 20111212

MapReduce の仕組み (2) ~ Map 処理~

•大量のテキストファイルの単語ごとの出現回数をカウントする処理を例にします

Split 処理

dog cat

catpig

pig dog

dog dog

Mapper 1

Mapper 2

Mapper 3

Mapper n

入力データ

dog 1cat 1

cat 1pig 1

pig 1dog 1

dog 1dog 1

Map 処理 出力データ

ビッグデータ

※ Split 処理はデフォルト 64MB ごとに分割

Page 10: MapReduceを使った並列化 20111212

MapReduce の仕組み (3) ~ Sort & Shuffle 処理~

dog 1cat 1

cat 1pig 1

pig 1dog 1

dog 1dog 1

入力データ

Sort

dog 1dog 1dog 1dog 1cat 1cat 1pig 1pig 1

Shuffle

dog

1111

cat11

pig11

出力データSort 処理 Shuffle 処理

Page 11: MapReduceを使った並列化 20111212

MapReduce の仕組み (4) ~ Reduce 処理~

入力データ

dog 4

cat 2

pig 2

dog

1111

cat11

pig11

Reducer 1

Reducer 2

Reducer n

出力データReduce 処理 結果

dog 4cat 2pig 2

Page 12: MapReduceを使った並列化 20111212

MapReduce のメリット•1 台のマシンでは扱えない大量のデータが扱え

る•複数のマシンに分散することにより処理が高速•Map 処理と Reduce 処理を書くのは簡単•対障害性バッチリ ( らしい )•スケールアウト・スケールダウンしやすい•Map 処理・ Reduce 処理を多段に組むことで複

雑な処理も可能

Page 13: MapReduceを使った並列化 20111212

MapReduce のデメリット•バッチ処理でしか使えない•小規模ではボトルネックの方が大きく遅い•処理やデータが依存しまくっていて細かく分割

できない場合は使えない

Page 14: MapReduceを使った並列化 20111212

MapReduce の活用ポイント•Apache ログなど大量のログの集計•Web など大量のテキストの集計•SNS などユーザごとの大量データの処理

株価

テクニカル

アルゴリズム取引