MapReduce基礎

2,013 views
1,933 views

Published on

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

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,013
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
21
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

MapReduce基礎

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

×