Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Data Intensive TextProcessing with MapReduce- #3 MapReduce Algorithm Design -          @just_do_neet
Data Intensive...(snip         書籍Data Intensive Text Processing with MapReduce #3   2
#3 MapReduce Algorithm Design         第三章:MapReduce アルゴリズムの設計             •MapReduceはシンプルでスケーラブル              (Mapper / Re...
#3 MapReduce Algorithm Design         第三章:MapReduce アルゴリズムの設計             •ローカル集約             •pairsとstripes             •...
ローカル集約Data Intensive Text Processing with MapReduce #3   5
Local Aggregation         ローカル集約             •HadoopではMap→Reduce間の受け渡しの際に中              間データをディスクに書き込む                 •オー...
Local Aggregation         ローカル集約             •問題設定:さだまさしの歌詞から頻出単語を抽              出。                      •データ元:http://www....
Local Aggregation         ローカル集約             •標準的なMapReduce処理              ドキュメント中に語が出現するごとにEmit             • https://gis...
Local Aggregation         ローカル集約             •連想配列を用いてドキュメントごとに語のカウン              トを集計してEmit(in-mapper combining)         ...
Local Aggregation         ローカル集約             •連想配列をクラス内で保持し、すべてのドキュメ              ント中の語のカウントを集計した後にEmit             • http...
Local Aggregation         ローカル集約             •in-mapper combining のメリット                 •Map→Reduceの受け渡し回数を減らすことで         ...
Local Aggregation         ローカル集約             •in-mapper combiningのnaiveな改善(メモリ関連)                 •https://gist.github.com...
pairsとstripesData Intensive Text Processing with MapReduce #3    13
pairs and stripes         pairsとstripes             •複合型のキーの集約テクニック             •一例:文章の中から語の共起頻度を算出する                 •共起:...
pairs and stripes         pairsとstripes             •共起語抽出の情報量→基本的にO(n^2)                 •「私はさだまさしが好きです。」                ...
pairs and stripes         pairsとstripes             •問題設定:さだまさしの歌詞から頻出する共起語              を抽出。                      •データ元:h...
pairs and stripes         pairsとstripes             •pairs:ワードwの共起語uを抽出し複合キーとし、              複合キー+出現頻度をEmit             • ...
pairs and stripes         pairsとstripes             •stripes:ウインドウの最初の語wをキー。共起語u              のそれぞれの頻度をHashで保持しEmit       ...
pairs and stripes         pairsとstripes             •「私はさだまさしが好きです」             •pairs                 • {私 は:1}, {私 さだまさし...
pairs and stripes         pairsとstripes             •共起語の出現頻度Data Intensive Text Processing with MapReduce #3   20
相対頻度Data Intensive Text Processing with MapReduce #3   21
Computing Relative Freq.         相対頻度             •ある語wと共起するuの出現頻度だけでなく、相              対頻度(条件付き確率?)が取得したい場合があ             ...
Computing Relative Freq.         相対頻度             •stripes: https://gist.github.com/3475934                 •語wについて、すべての共起...
セカンダリソートData Intensive Text Processing with MapReduce #3   24
Secondary Sort         セカンダリソート             •Keyだけでなく、Valueでもソートをしたい                 1.Reduceの中でソート                 2.Map→...
Secondary Sort         セカンダリソート             •問題設定:さだまさしのコンサート会場のリスト              を解析                      •Sort1:コンサート会場  ...
Secondary Sort         セカンダリソート             •Reduceの中でソート                 • https://gist.github.com/3486552               ...
Secondary Sort         セカンダリソート             •value-to-key conversion                 • https://gist.github.com/3486573    ...
リレーショナルな結合Data Intensive Text Processing with MapReduce #3   29
Relational Join         リレーショナルな結合             •手法だけ紹介                 •Reduce Side Join                  →Reduce側でJoinする ...
Relational Join         リレーショナルな結合             •Reduce Side Join                 •参考:                   http://code.google...
Relational Join         リレーショナルな結合             •Memory-Backed Join                 •参考:                   http://d.hatena....
Bibliography         参考文献(書籍以外)             •http://www.slideshare.net/nokuno/              hadoopreading05-data-intensive...
ご清聴                  ありがとうございましたData Intensive Text Processing with MapReduce #3     34
Upcoming SlideShare
Loading in …5
×

Data Intensive Text Processing with MapReduce - #3 MapReduce Algorithm Design -

9,184 views

Published on

Published in: Technology
  • Be the first to comment

Data Intensive Text Processing with MapReduce - #3 MapReduce Algorithm Design -

  1. 1. Data Intensive TextProcessing with MapReduce- #3 MapReduce Algorithm Design - @just_do_neet
  2. 2. Data Intensive...(snip 書籍Data Intensive Text Processing with MapReduce #3 2
  3. 3. #3 MapReduce Algorithm Design 第三章:MapReduce アルゴリズムの設計 •MapReduceはシンプルでスケーラブル (Mapper / Reducer) •シンプルなため制約が大きく、限定的な手法しか 用いることができない。 •その中で、MapReduceにおけるデザインパターン 的なものや、問題解決のテクニックを紹介。Data Intensive Text Processing with MapReduce #3 3
  4. 4. #3 MapReduce Algorithm Design 第三章:MapReduce アルゴリズムの設計 •ローカル集約 •pairsとstripes •相対頻度の計算 •セカンダリソート •リレーショナルな結合Data Intensive Text Processing with MapReduce #3 4
  5. 5. ローカル集約Data Intensive Text Processing with MapReduce #3 5
  6. 6. Local Aggregation ローカル集約 •HadoopではMap→Reduce間の受け渡しの際に中 間データをディスクに書き込む •オーバーヘッドが大きい •中間データの削減を行う事で処理効率がアップす るData Intensive Text Processing with MapReduce #3 6
  7. 7. Local Aggregation ローカル集約 •問題設定:さだまさしの歌詞から頻出単語を抽 出。 •データ元:http://www.cai-insect.jp/sada/Data Intensive Text Processing with MapReduce #3 7
  8. 8. Local Aggregation ローカル集約 •標準的なMapReduce処理 ドキュメント中に語が出現するごとにEmit • https://gist.github.com/3475182 https://gist.github.com/3475195Data Intensive Text Processing with MapReduce #3 8
  9. 9. Local Aggregation ローカル集約 •連想配列を用いてドキュメントごとに語のカウン トを集計してEmit(in-mapper combining) • https://gist.github.com/3475211Data Intensive Text Processing with MapReduce #3 9
  10. 10. Local Aggregation ローカル集約 •連想配列をクラス内で保持し、すべてのドキュメ ント中の語のカウントを集計した後にEmit • https://gist.github.com/3475214Data Intensive Text Processing with MapReduce #3 10
  11. 11. Local Aggregation ローカル集約 •in-mapper combining のメリット •Map→Reduceの受け渡し回数を減らすことで パフォーマンスの向上が期待できる。 •デメリット •Mapタスクのメモリ枯渇に注意 •データ出現パターンによってはあまり有効でな いケースもある。Data Intensive Text Processing with MapReduce #3 11
  12. 12. Local Aggregation ローカル集約 •in-mapper combiningのnaiveな改善(メモリ関連) •https://gist.github.com/3475348 •定期的にMapの内容をフラッシュData Intensive Text Processing with MapReduce #3 12
  13. 13. pairsとstripesData Intensive Text Processing with MapReduce #3 13
  14. 14. pairs and stripes pairsとstripes •複合型のキーの集約テクニック •一例:文章の中から語の共起頻度を算出する •共起:ある単語がある文章中に出たとき、その 文章中に別の限られた単語が頻繁に出現するこ と。(wikipedia) •「私はさだまさしが好きです。」 →「私:さだまさし」「私:好き」...Data Intensive Text Processing with MapReduce #3 14
  15. 15. pairs and stripes pairsとstripes •共起語抽出の情報量→基本的にO(n^2) •「私はさだまさしが好きです。」 →「私:は」「私:さだまさし」「私:が」...  「好き:です」 私 は さだまさし が 好き です は (私) さだまさし が 好き です さだまさし (私) (は) が 好き です が (私) (は) (さだまさし) 好き です 好き (私) (は) (さだまさし) (が) です です (私) (は) (さだまさし) (が) (好き)Data Intensive Text Processing with MapReduce #3 15
  16. 16. pairs and stripes pairsとstripes •問題設定:さだまさしの歌詞から頻出する共起語 を抽出。 •データ元:http://www.cai-insect.jp/sada/Data Intensive Text Processing with MapReduce #3 16
  17. 17. pairs and stripes pairsとstripes •pairs:ワードwの共起語uを抽出し複合キーとし、 複合キー+出現頻度をEmit • https://gist.github.com/3475607 https://gist.github.com/3475609Data Intensive Text Processing with MapReduce #3 17
  18. 18. pairs and stripes pairsとstripes •stripes:ウインドウの最初の語wをキー。共起語u のそれぞれの頻度をHashで保持しEmit • https://gist.github.com/3475629 https://gist.github.com/3475644Data Intensive Text Processing with MapReduce #3 18
  19. 19. pairs and stripes pairsとstripes •「私はさだまさしが好きです」 •pairs • {私 は:1}, {私 さだまさし:1} ,{私 が:1}, {私 好き:1}, {私 です:1}, {は さだまさし:1}, {は が:1}..... •stripes • {私: {さだまさし:1} {が:1} {好き:1} {です:1}}, {は: {さだまさし:1} {が:1}.....} •Map→Reduceのemitの数は paris > stripesData Intensive Text Processing with MapReduce #3 19
  20. 20. pairs and stripes pairsとstripes •共起語の出現頻度Data Intensive Text Processing with MapReduce #3 20
  21. 21. 相対頻度Data Intensive Text Processing with MapReduce #3 21
  22. 22. Computing Relative Freq. 相対頻度 •ある語wと共起するuの出現頻度だけでなく、相 対頻度(条件付き確率?)が取得したい場合があ る。 •そのためには語wの出現頻度(式右下部)を算出 する必要がある。Data Intensive Text Processing with MapReduce #3 22
  23. 23. Computing Relative Freq. 相対頻度 •stripes: https://gist.github.com/3475934 •語wについて、すべての共起語uとその出現頻 度がReducerに渡されるので、出現頻度を合算 して計算すれば良い。 •pairs: https://gist.github.com/3475992 •そのままでは不可。Partitionerを改修して、語 wが先頭のkeyをすべて同じReducerに振り分 けるようにする必要がある。Data Intensive Text Processing with MapReduce #3 23
  24. 24. セカンダリソートData Intensive Text Processing with MapReduce #3 24
  25. 25. Secondary Sort セカンダリソート •Keyだけでなく、Valueでもソートをしたい 1.Reduceの中でソート 2.Map→Reduceの際に、ソートしたいValueを Keyに含めてしまう。 (value-to-key conversion)Data Intensive Text Processing with MapReduce #3 25
  26. 26. Secondary Sort セカンダリソート •問題設定:さだまさしのコンサート会場のリスト を解析 •Sort1:コンサート会場 Sort2:コンサート実施年Data Intensive Text Processing with MapReduce #3 26
  27. 27. Secondary Sort セカンダリソート •Reduceの中でソート • https://gist.github.com/3486552 https://gist.github.com/3486554 • Map→Reduce {“東京厚生年金会館” : “2000t1”} {“東京厚生年金会館” : “2000t1”} {“東 京厚生年金会館” : “2001t1”} Reduce→Result {“東京厚生年金会館” : “2000t2”} {“東京厚生年金会館” : “2001t1”} ←Reduce内で年で並び替えData Intensive Text Processing with MapReduce #3 27
  28. 28. Secondary Sort セカンダリソート •value-to-key conversion • https://gist.github.com/3486573 • Map→Reduce {“東京厚生年金会館t2000” : 1} {“東京厚生年金会館t2000” : 1} {“東京 厚生年金会館t2001” : 1} ←Keyの中に年を含める Reduce→Result {“東京厚生年金会館t2000” : 2} {“東京厚生年金会館t2001” : 1}Data Intensive Text Processing with MapReduce #3 28
  29. 29. リレーショナルな結合Data Intensive Text Processing with MapReduce #3 29
  30. 30. Relational Join リレーショナルな結合 •手法だけ紹介 •Reduce Side Join →Reduce側でJoinする •Map Side Join →Map側でJoinする •Memory-Backed Join →Mapperもしくは外部メモリ(memcachedな ど)でデータをまとめて保持し、JoinするData Intensive Text Processing with MapReduce #3 30
  31. 31. Relational Join リレーショナルな結合 •Reduce Side Join •参考: http://code.google.com/p/try-hadoop-mapreduce-java/source/browse/trunk/try-mapreduce/ src/main/java/jp/gr/java_conf/n3104/try_mapreduce/ JoinWithDeptNameUsingReduceSideJoin.java •Map Side Join •参考: http://code.google.com/p/try-hadoop-mapreduce-java/source/browse/trunk/try-mapreduce/ src/main/java/jp/gr/java_conf/n3104/try_mapreduce/ JoinWithDeptNameUsingReduceSideJoin.javaData Intensive Text Processing with MapReduce #3 31
  32. 32. Relational Join リレーショナルな結合 •Memory-Backed Join •参考: http://d.hatena.ne.jp/wyukawa/20110818/1313670105Data Intensive Text Processing with MapReduce #3 32
  33. 33. Bibliography 参考文献(書籍以外) •http://www.slideshare.net/nokuno/ hadoopreading05-data-intensive3 •http://d.hatena.ne.jp/wyukawa/ 20111002/1317550750Data Intensive Text Processing with MapReduce #3 33
  34. 34. ご清聴 ありがとうございましたData Intensive Text Processing with MapReduce #3 34

×