MapReduce
プログラミング⼊入⾨門
「DevLOVE  ⻩黄⾊色い象使いが、獄⻑⾧長に出会うまで。」  
〜~象、邂逅編〜~  
2011-‐‑‒05-‐‑‒11
変更履歴
•2011/05/11
•新規作成。
•2011/09/20
•変更履歴を追加した。
•try-hadoop-mapreduce-javaへのリン
クを追加した。
•MapReduce入門へのリンクを追加した。
n3104
•能登 諭(のと さとし)
•Hadoop好きのJava使いです。
•twitter : @n3104
•株式会社トップゲート所属
最初に
このスライドは try-hadoop-mapreduce-
java のソースについて解説している。
http://code.google.com/p/try-hadoop-
mapreduce-java/
WordCount
•MapReduceの基本
•Mapとは
•Reduceとは
•Combinerとは
•旧APIと新API
MapReduceの基本
MapReduce入門参照
http://www.slideshare.net/n3104/
mapreduce-7587216
旧APIと新API
•0.20系から新APIが登場した。
•0.20系は移行途中で一部のAPIしか移行され
ていない。0.21系は移行済み。
•周辺プロダクトやEMRは0.20系、つまり旧
APIにか対応していない。
•現状は旧APIを使うのが無難。
AverageAgeOf
Employee
•MapReduceの仕組みを再確認。
•MapperとReducerの出力の型が異なる場
合は設定が必要になる。
•Writableについて
Writable
•Hadoopは独自のシリアライゼーションの仕
組みを持つ。
•象本の4章に詳しく載っている。
•無料ならひしだまさんのメモ参照。
•http://www.ne.jp/asahi/hishidama/home/tech/apache/
hadoop/Writable.html
平均給与を求めてみましょう。
AverageAgeOf
Department
•Mapperの出力はkey毎にReducerでまと
められる。
•Reducerの処理自体は
AverageAgeOfEmployeeと同じ。key
の型が異なるだけ。
部門ごとの平均給与を
求めてみましょう。
SortByAgeUsing
HashPartitioner
•Mapperの出力がReducerの入力として渡
される際にkeyでソートされる。
•ソートには部分ソートと全体ソートがある。
•ソートの制御にはPartionerと
WritableComparatorを利用する。
給与でソートしてみましょう。
SortByAgeUsing
TotalOrderPartitioner
•全体ソートにはTotalOrder-Partitioner
を利用する。
•InputSamplerを利用して実データをサン
プリングする。
•サンプリングデータの配布には
DistributedCacheを利用する。
SortByDeptAndAge
UsingSecondarySort
•複数のキーでソートするにはSecondary
Sortを利用する。
•SortByDeptAndAgeUsing-
Comparatorのように単一キーのソートで
も実現可能。
MergeByDepartment
UsingMultipleInputs
•ジョインには複数の種類のファイルが必要。
MultipleInputsを利用することで単一の
MapReduceジョブで複数の種類のファイル
を同時に処理できる。
JoinWithDeptName
UsingReduceSideJoin
•Reduce-Side Joinは以下の2つを利用す
る。
•MultipleInputs
•Secondary Sort
テストについて
•ユニットテスト
•Hadoop徹底入門ではMRUnit。
•象本ではMockitoを紹介。
•象本はLocalJobRunnerなど色々紹介。
•まだ確認できてません^^;
書籍について
•Hadoop徹底入門はHadoopの入門書とし
てとてもいい。
•象本はMapReduceプログラミングの入門
書としてとてもいい。
•実践的な内容だと「Data-Intensive Text
Processing with MapReduce」?
これであなたも象使い(^^)

MapReduceプログラミング入門

Editor's Notes

  • #2 \n
  • #3 \n
  • #4 15分\n実際にプログラムを実行し、処理イメージもセットで説明。\n
  • #5 \n
  • #6 10分\n実際にプログラムを実行し、処理イメージもセットで説明。\n
  • #7 10分\n実際にプログラムを実行し、処理イメージもセットで説明。\n
  • #8 \n
  • #9 10分\n実際にプログラムを実行し、処理イメージもセットで説明。\n
  • #10 \n
  • #11 10分\n実際にプログラムを実行し、処理イメージもセットで説明。\n
  • #12 \n
  • #13 5分\nこの時点で1時間経過しているようであれば飛ばす\n
  • #14 15分\n\n
  • #15 5分\n\n
  • #16 15分\n\n
  • #17 \n
  • #18 \n\n
  • #19 \n