Top Banner
Chapter2 MapReduce Basics Joongjin Bae
25

MapReduce基礎

Jun 28, 2015

Download

Technology

Joongjin Bae

Hadoop MapReduceデザインパターンの第2章MapReduce基礎のまとめです。

他の方の1章/2章まとめ
http://www.slideshare.net/shiumachi/dataintensive-text-processing-with-mapreducech1ch2

著者講義動画
http://videolectures.net/clspss09_lin_ditpm/

著者講義スライド資料
http://www.slideshare.net/gnap/dataintensive-text-processing-with-mapreduce-2688177
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: MapReduce基礎

Chapter2 MapReduce Basics

Joongjin Bae

Page 2: MapReduce基礎

Big Dataの解決方法

• Divide and Conquerで解決可能

partition

Page 3: MapReduce基礎

なぜ苦労していたの?

• どのように問題を小さいタスク分解するのか?

• 多数マシンのworkerにどのように作業を分配するのか?

• Workerが必要なデータを得られることは、どのように保証すればいいのか?

• 等々 それでMapReduceが誕生

Page 4: MapReduce基礎

2.1 FUNCTIONAL PROGRAMMING ROOTS

• Foldは「折りたたむ」の意味

–集合の各要素に演算を行い、値に縮める

例)リストの和

入力:[1; 2; 3; 4; 5; 6; 7; 8; 9; 10]

出力:55 scala> List("How","long","is","longest?").foldLeft(0)((i,s) => i max s.length) res3: Int = 8

Page 5: MapReduce基礎

2.1 FUNCTIONAL PROGRAMMING ROOTS

• Mapは入力データに対して演算を行いその結果を集合体で戻す

例) scala> List("How","long","are","we?") map (s => s.length) res0: List[Int] = List(3, 4, 3, 3)

Page 6: MapReduce基礎

2.1 FUNCTIONAL PROGRAMMING ROOTS

• MapReduceは関数型言語起源

• MapとReduceは関数型言語のhigh-order関数mapとfoldから来ている

List Arry

Fold(reduce)

Map

Page 7: MapReduce基礎

2.2 MAPPERS AND REDUCERS

テキスト集合内の各単語カウンタを考えると

• まず(textid, text)のマップを生成

• Mapper

– Input key-value pair (textid, text) → (word, 1)

–入力key-valueペアを取り、中間的なkey-valueペアに変換

Page 8: MapReduce基礎

2.2 MAPPERS AND REDUCERS

• Shuffle and Sort

• Reducer

– Input key-value pair (word, [1,4]) → (word,5)

–入力key-value(collection)ペアを取り、演算を行いkey-valueペアの形式で出力

–最終結果又は他のMapReduceの入力データになる

Page 9: MapReduce基礎

2.2 MAPPERS AND REDUCERS

1: class Mapper 2: method Map(docid a; doc d) 3: for all term t 2 doc d do 4: Emit(term t; count 1) 1: class Reducer 2: method Reduce(term t; counts [c1; c2; : : :]) 3: sum 0 4: for all count c 2 counts [c1; c2; : : :] do 5: sum sum + c 6: Emit(term t; count sum)

Page 10: MapReduce基礎

2.2 MAPPERS AND REDUCERS

Page 11: MapReduce基礎

2.3 THE EXECUTION FRAMEWORK

実行フレームワークの処理事項

• Scheduling

• Data/code co-location

• Synchronization

• Error and fault handling

Page 12: MapReduce基礎

Scheduling

• タスクの割り当てを担当 – タスクキュー管理

–進行中のタスク進捗追跡

• ジョブに属するタスクの制御 – MapReduceのジョブの実行速度はstragglerに左右

–投機的実行でフレームワークが最初終了したタスク結果を使用

– Googleでは実行速度44%改善したと報告

Page 13: MapReduce基礎

Data/code co-location

• コードの移動コストよりデータのコストが高い

• ネットワークがボトルネックになる

• データブロックにコードを移動しタスクを行う

• 出来ない場合、他の場所でタスクを実行しデータが移動

• この場合、優先的に同じラックの他のノードでタスクを行う

Page 14: MapReduce基礎

Synchronization

• 中間的な結果共有又は状態に関する情報共有の待ち合わせ

• MapReduceの中間的key-valueペアはグループ化が必要でこれはmapとreduceフェーズの間のbarrierで実現

• グループ化(suffle and sort)終了までreduceは

実行できない点が関数型プログラミングとの違い

Page 15: MapReduce基礎

Error and fault handling

• 障害は当たり前

• MapReduceは障害が発生してもジョブを最後まで実行する仕組みが必須

Page 16: MapReduce基礎

2.4 PARTITIONERS AND COMBINERS

• Partitionerは、中間keyスペースの分割と中間key-valueペアをreducerへ渡す仕事を担当

–どのタスクに中間key-valueペアをコピーするかを決める

• Combinerは、最適化又はmini reducer

– Shuffle and sortの前にreducerと同様集約処理を行う

Page 17: MapReduce基礎

2.4 PARTITIONERS AND COMBINERS

Page 18: MapReduce基礎

2.5 THE DISTRIBUTED FILE SYSTEM

• ネットワークファイルシステムの一種であり、単一のファイルシステムが複数の物理コンピュータノードに分散して存在する形態のものを指す。

• 分散ファイルシステムには一般に、透過的レプリケーションとフォールトトレラント性に関する機能がある。

Page 19: MapReduce基礎

DFS

• データは大きめのブロック(64MB)に分割し、複数(主に3)に複製され異なるノードに分散配置

• 名前空間はマスタ−が管理

– Google File System(GFS):GFS Master

– Hadoop Distributed File System(HDFS): namenode

Page 20: MapReduce基礎

HDFS Architecture

Page 21: MapReduce基礎

HDFS namenodeの責任

• ファイルの名前空間管理

– メタデータ、ディレクトリ構造、マッピングなど

• ファイル操作の制御

– クライアントとデータノードが直接通信

• ファイルシステムの全体的な健全性の管理

– Heartbeat message送受信

–複製数が足りない場合追加、多い場合削除

–全体データブロックの調整

Page 22: MapReduce基礎

GFSとHDFSの特徴

• 比較的少数の大きなサイズのファイル

• 負荷はバッチ処理が原因

– Latencyよりwide bandwidthが重要

• APPはDFSの特徴を意識する必要

• 多数のユーザの利用は想定してない

– Hadoopはkerberos

• 自己モニタリング及び自己修復

– コモディティシステムは信頼性が低い

Page 23: MapReduce基礎

Single Masterの特徴

• CAP定理のConsistency重視

–大規模システムではPartition-tolerance無理

• このSingle MasterがDFSの弱点

–マスタが停止するとMapReduce全体が停止

–データ通信はクライアントとデータノードが直接するため危険性の軽減

– warm standby namenodeで対応可能

Page 24: MapReduce基礎

2.6 HADOOP CLUSTER ARCHITECTURE

Page 25: MapReduce基礎

参考

• http://www.slideshare.net/shiumachi/dataint

ensive-text-processing-with-mapreducech1ch2

• http://videolectures.net/clspss09_lin_ditpm/

• http://www.slideshare.net/gnap/dataintensive-text-processing-with-mapreduce-2688177

• Hadoop徹底入門