SlideShare una empresa de Scribd logo
1 de 25
Descargar para leer sin conexión
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/dataintensiv
  e-text-processing-with-mapreduce-2688177
• Hadoop徹底入門

Más contenido relacionado

Similar a MapReduce基礎

今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)
YoheiOkuyama
 
Hadoop輪読会第6章
Hadoop輪読会第6章Hadoop輪読会第6章
Hadoop輪読会第6章
Akihiro Kuwano
 
ただいまHadoop勉強中
ただいまHadoop勉強中ただいまHadoop勉強中
ただいまHadoop勉強中
Satoshi Noto
 
今さら聞けないHadoop セントラルソフト株式会社(20120119)
今さら聞けないHadoop セントラルソフト株式会社(20120119)今さら聞けないHadoop セントラルソフト株式会社(20120119)
今さら聞けないHadoop セントラルソフト株式会社(20120119)
Toru Takizawa
 

Similar a MapReduce基礎 (20)

今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)
 
Hadoop事始め
Hadoop事始めHadoop事始め
Hadoop事始め
 
Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~
Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~
Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~
 
Googleの基盤クローン Hadoopについて
Googleの基盤クローン HadoopについてGoogleの基盤クローン Hadoopについて
Googleの基盤クローン Hadoopについて
 
Hadoop輪読会第6章
Hadoop輪読会第6章Hadoop輪読会第6章
Hadoop輪読会第6章
 
A Deeper Understanding of Spark Internals (Hadoop Conference Japan 2014)
A Deeper Understanding of Spark Internals (Hadoop Conference Japan 2014)A Deeper Understanding of Spark Internals (Hadoop Conference Japan 2014)
A Deeper Understanding of Spark Internals (Hadoop Conference Japan 2014)
 
OSC2011 Tokyo/Spring Hadoop入門
OSC2011 Tokyo/Spring Hadoop入門OSC2011 Tokyo/Spring Hadoop入門
OSC2011 Tokyo/Spring Hadoop入門
 
MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)
MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)
MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)
 
Scala on Hadoop
Scala on HadoopScala on Hadoop
Scala on Hadoop
 
Asakusa Enterprise Batch Processing Framework for Hadoop
Asakusa Enterprise Batch Processing Framework for HadoopAsakusa Enterprise Batch Processing Framework for Hadoop
Asakusa Enterprise Batch Processing Framework for Hadoop
 
GPUを考慮したMapReduceのタスクスケジューリング
GPUを考慮したMapReduceのタスクスケジューリングGPUを考慮したMapReduceのタスクスケジューリング
GPUを考慮したMapReduceのタスクスケジューリング
 
TinyMapReduce on ruby
TinyMapReduce on rubyTinyMapReduce on ruby
TinyMapReduce on ruby
 
ただいまHadoop勉強中
ただいまHadoop勉強中ただいまHadoop勉強中
ただいまHadoop勉強中
 
Riak map reduce for beginners
Riak map reduce for beginnersRiak map reduce for beginners
Riak map reduce for beginners
 
BPStudy32 CouchDB 再入門
BPStudy32 CouchDB 再入門BPStudy32 CouchDB 再入門
BPStudy32 CouchDB 再入門
 
今さら聞けないHadoop セントラルソフト株式会社(20120119)
今さら聞けないHadoop セントラルソフト株式会社(20120119)今さら聞けないHadoop セントラルソフト株式会社(20120119)
今さら聞けないHadoop セントラルソフト株式会社(20120119)
 
BigQuery読書会#2資料
BigQuery読書会#2資料BigQuery読書会#2資料
BigQuery読書会#2資料
 
MapReduce入門
MapReduce入門MapReduce入門
MapReduce入門
 
Presto As A Service - Treasure DataでのPresto運用事例
Presto As A Service - Treasure DataでのPresto運用事例Presto As A Service - Treasure DataでのPresto運用事例
Presto As A Service - Treasure DataでのPresto運用事例
 
さわってみようTOPPERS/SSP
さわってみようTOPPERS/SSPさわってみようTOPPERS/SSP
さわってみようTOPPERS/SSP
 

Más de Joongjin Bae (6)

The secret to building good development teams
The secret to building good development teamsThe secret to building good development teams
The secret to building good development teams
 
Reactive summit 2018
Reactive summit 2018Reactive summit 2018
Reactive summit 2018
 
Chapter 8 : Evaluation in Information Retrieval
Chapter 8 : Evaluation in Information RetrievalChapter 8 : Evaluation in Information Retrieval
Chapter 8 : Evaluation in Information Retrieval
 
voldemortの技術 - Dynamoとの比較
voldemortの技術 - Dynamoとの比較voldemortの技術 - Dynamoとの比較
voldemortの技術 - Dynamoとの比較
 
Programming in Scala Chapter 17 Collections
Programming in Scala Chapter 17 CollectionsProgramming in Scala Chapter 17 Collections
Programming in Scala Chapter 17 Collections
 
Cpuの速度向上はいかに実現されたのか
Cpuの速度向上はいかに実現されたのかCpuの速度向上はいかに実現されたのか
Cpuの速度向上はいかに実現されたのか
 

Último

Último (10)

知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 

MapReduce基礎

  • 2. Big Dataの解決方法 • Divide and Conquerで解決可能 partition
  • 3. なぜ苦労していたの? • どのように問題を小さいタスク分解するの か? • 多数マシンのworkerにどのように作業を分配 するのか? • Workerが必要なデータを得られることは、ど のように保証すればいいのか? • 等々 それで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)
  • 6. 2.1 FUNCTIONAL PROGRAMMING ROOTS • MapReduceは関数型言語起源 • MapとReduceは関数型言語のhigh-order関数 mapとfoldから来ている List Arry Fold(reduce) Map
  • 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)
  • 10. 2.2 MAPPERS AND REDUCERS
  • 11. 2.3 THE EXECUTION FRAMEWORK 実行フレームワークの処理事項 • Scheduling • Data/code co-location • Synchronization • Error and fault handling
  • 12. Scheduling • タスクの割り当てを担当 – タスクキュー管理 – 進行中のタスク進捗追跡 • ジョブに属するタスクの制御 – MapReduceのジョブの実行速度はstragglerに左 右 – 投機的実行でフレームワークが最初終了したタ スク結果を使用 – Googleでは実行速度44%改善したと報告
  • 13. Data/code co-location • コードの移動コストよりデータのコストが高い • ネットワークがボトルネックになる • データブロックにコードを移動しタスクを行う • 出来ない場合、他の場所でタスクを実行し データが移動 • この場合、優先的に同じラックの他のノードで タスクを行う
  • 14. Synchronization • 中間的な結果共有又は状態に関する情報共 有の待ち合わせ • MapReduceの中間的key-valueペアはグルー プ化が必要でこれはmapとreduceフェーズの 間のbarrierで実現 • グループ化(suffle and sort)終了までreduceは 実行できない点が関数型プログラミングとの 違い
  • 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と同様集約処理を 行う
  • 17. 2.4 PARTITIONERS AND COMBINERS
  • 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送受信 – 複製数が足りない場合追加、多い場合削除 – 全体データブロックの調整
  • 22. GFSとHDFSの特徴 • 比較的少数の大きなサイズのファイル • 負荷はバッチ処理が原因 – Latencyよりwide bandwidthが重要 • APPはDFSの特徴を意識する必要 • 多数のユーザの利用は想定してない – Hadoopはkerberos • 自己モニタリング及び自己修復 – コモディティシステムは信頼性が低い
  • 23. Single Masterの特徴 • CAP定理のConsistency重視 – 大規模システムではPartition-tolerance無理 • このSingle MasterがDFSの弱点 – マスタが停止するとMapReduce全体が停止 – データ通信はクライアントとデータノードが直接す るため危険性の軽減 – warm standby namenodeで対応可能
  • 24. 2.6 HADOOP CLUSTER ARCHITECTURE
  • 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徹底入門