mapreduce基礎
DESCRIPTION
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-2688177TRANSCRIPT
Chapter2 MapReduce Basics
Joongjin Bae
Big Dataの解決方法
• Divide and Conquerで解決可能
partition
なぜ苦労していたの?
• どのように問題を小さいタスク分解するのか?
• 多数マシンのworkerにどのように作業を分配するのか?
• Workerが必要なデータを得られることは、どのように保証すればいいのか?
• 等々 それで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
2.1 FUNCTIONAL PROGRAMMING ROOTS
• Mapは入力データに対して演算を行いその結果を集合体で戻す
例) scala> List("How","long","are","we?") map (s => s.length) res0: List[Int] = List(3, 4, 3, 3)
2.1 FUNCTIONAL PROGRAMMING ROOTS
• MapReduceは関数型言語起源
• MapとReduceは関数型言語のhigh-order関数mapとfoldから来ている
List Arry
Fold(reduce)
Map
2.2 MAPPERS AND REDUCERS
テキスト集合内の各単語カウンタを考えると
• まず(textid, text)のマップを生成
• Mapper
– Input key-value pair (textid, text) → (word, 1)
–入力key-valueペアを取り、中間的なkey-valueペアに変換
2.2 MAPPERS AND REDUCERS
• Shuffle and Sort
• Reducer
– Input key-value pair (word, [1,4]) → (word,5)
–入力key-value(collection)ペアを取り、演算を行いkey-valueペアの形式で出力
–最終結果又は他の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)
2.2 MAPPERS AND REDUCERS
2.3 THE EXECUTION FRAMEWORK
実行フレームワークの処理事項
• Scheduling
• Data/code co-location
• Synchronization
• Error and fault handling
Scheduling
• タスクの割り当てを担当 – タスクキュー管理
–進行中のタスク進捗追跡
• ジョブに属するタスクの制御 – MapReduceのジョブの実行速度はstragglerに左右
–投機的実行でフレームワークが最初終了したタスク結果を使用
– Googleでは実行速度44%改善したと報告
Data/code co-location
• コードの移動コストよりデータのコストが高い
• ネットワークがボトルネックになる
• データブロックにコードを移動しタスクを行う
• 出来ない場合、他の場所でタスクを実行しデータが移動
• この場合、優先的に同じラックの他のノードでタスクを行う
Synchronization
• 中間的な結果共有又は状態に関する情報共有の待ち合わせ
• MapReduceの中間的key-valueペアはグループ化が必要でこれはmapとreduceフェーズの間のbarrierで実現
• グループ化(suffle and sort)終了までreduceは
実行できない点が関数型プログラミングとの違い
Error and fault handling
• 障害は当たり前
• MapReduceは障害が発生してもジョブを最後まで実行する仕組みが必須
2.4 PARTITIONERS AND COMBINERS
• Partitionerは、中間keyスペースの分割と中間key-valueペアをreducerへ渡す仕事を担当
–どのタスクに中間key-valueペアをコピーするかを決める
• Combinerは、最適化又はmini reducer
– Shuffle and sortの前にreducerと同様集約処理を行う
2.4 PARTITIONERS AND COMBINERS
2.5 THE DISTRIBUTED FILE SYSTEM
• ネットワークファイルシステムの一種であり、単一のファイルシステムが複数の物理コンピュータノードに分散して存在する形態のものを指す。
• 分散ファイルシステムには一般に、透過的レプリケーションとフォールトトレラント性に関する機能がある。
DFS
• データは大きめのブロック(64MB)に分割し、複数(主に3)に複製され異なるノードに分散配置
• 名前空間はマスタ−が管理
– Google File System(GFS):GFS Master
– Hadoop Distributed File System(HDFS): namenode
HDFS Architecture
HDFS namenodeの責任
• ファイルの名前空間管理
– メタデータ、ディレクトリ構造、マッピングなど
• ファイル操作の制御
– クライアントとデータノードが直接通信
• ファイルシステムの全体的な健全性の管理
– Heartbeat message送受信
–複製数が足りない場合追加、多い場合削除
–全体データブロックの調整
GFSとHDFSの特徴
• 比較的少数の大きなサイズのファイル
• 負荷はバッチ処理が原因
– Latencyよりwide bandwidthが重要
• APPはDFSの特徴を意識する必要
• 多数のユーザの利用は想定してない
– Hadoopはkerberos
• 自己モニタリング及び自己修復
– コモディティシステムは信頼性が低い
Single Masterの特徴
• CAP定理のConsistency重視
–大規模システムではPartition-tolerance無理
• このSingle MasterがDFSの弱点
–マスタが停止するとMapReduce全体が停止
–データ通信はクライアントとデータノードが直接するため危険性の軽減
– warm standby namenodeで対応可能
2.6 HADOOP CLUSTER ARCHITECTURE
参考
• 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徹底入門