Weitere ähnliche Inhalte Ähnlich wie MapReduce基礎 (20) Mehr von Joongjin Bae (6) Kürzlich hochgeladen (10) MapReduce基礎4. 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
5. 2.1 FUNCTIONAL PROGRAMMING
ROOTS
• Mapは入力データに対して演算を行いその結
果を集合体で戻す
例) scala> List("How","long","are","we?") map (s => s.length)
res0: List[Int] = List(3, 4, 3, 3)
7. 2.2 MAPPERS AND REDUCERS
テキスト集合内の各単語カウンタを考えると
• まず(textid, text)のマップを生成
• Mapper
– Input key-value pair (textid, text) → (word, 1)
– 入力key-valueペアを取り、中間的なkey-valueペア
に変換
8. 2.2 MAPPERS AND REDUCERS
• Shuffle and Sort
• Reducer
– Input key-value pair (word, [1,4]) → (word,5)
– 入力key-value(collection)ペアを取り、演算を行い
key-valueペアの形式で出力
– 最終結果又は他のMapReduceの入力データにな
る
9. 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)
11. 2.3 THE EXECUTION FRAMEWORK
実行フレームワークの処理事項
• Scheduling
• Data/code co-location
• Synchronization
• Error and fault handling
12. Scheduling
• タスクの割り当てを担当
– タスクキュー管理
– 進行中のタスク進捗追跡
• ジョブに属するタスクの制御
– MapReduceのジョブの実行速度はstragglerに左
右
– 投機的実行でフレームワークが最初終了したタ
スク結果を使用
– Googleでは実行速度44%改善したと報告
15. Error and fault handling
• 障害は当たり前
• MapReduceは障害が発生してもジョブを最後
まで実行する仕組みが必須
16. 2.4 PARTITIONERS AND COMBINERS
• Partitionerは、中間keyスペースの分割と中間
key-valueペアをreducerへ渡す仕事を担当
– どのタスクに中間key-valueペアをコピーするかを
決める
• Combinerは、最適化又はmini reducer
– Shuffle and sortの前にreducerと同様集約処理を
行う
18. 2.5 THE DISTRIBUTED FILE SYSTEM
• ネットワークファイルシステムの一種であり、
単一のファイルシステムが複数の物理コン
ピュータノードに分散して存在する形態のも
のを指す。
• 分散ファイルシステムには一般に、透過的レ
プリケーションとフォールトトレラント性に関す
る機能がある。
19. DFS
• データは大きめのブロック(64MB)に分割し、
複数(主に3)に複製され異なるノードに分散配
置
• 名前空間はマスタ−が管理
– Google File System(GFS):GFS Master
– Hadoop Distributed File System(HDFS):
namenode
21. HDFS namenodeの責任
• ファイルの名前空間管理
– メタデータ、ディレクトリ構造、マッピングなど
• ファイル操作の制御
– クライアントとデータノードが直接通信
• ファイルシステムの全体的な健全性の管理
– Heartbeat message送受信
– 複製数が足りない場合追加、多い場合削除
– 全体データブロックの調整
23. Single Masterの特徴
• CAP定理のConsistency重視
– 大規模システムではPartition-tolerance無理
• このSingle MasterがDFSの弱点
– マスタが停止するとMapReduce全体が停止
– データ通信はクライアントとデータノードが直接す
るため危険性の軽減
– warm standby namenodeで対応可能
25. 参考
• http://www.slideshare.net/shiumachi/dataint
ensive-text-processing-with-
mapreducech1ch2
• http://videolectures.net/clspss09_lin_ditpm/
• http://www.slideshare.net/gnap/dataintensiv
e-text-processing-with-mapreduce-2688177
• Hadoop徹底入門