Data Intensive Text Processing with MapReduce  - #3 MapReduce Algorithm Design -
Upcoming SlideShare
Loading in...5
×
 

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

on

  • 7,431 views

 

Statistics

Views

Total Views
7,431
Views on SlideShare
3,718
Embed Views
3,713

Actions

Likes
1
Downloads
2
Comments
0

13 Embeds 3,713

http://dayafterneet.blogspot.jp 3595
http://dayafterneet.blogspot.com 72
http://exchangite25.tawaba.com 20
http://dayafterneet.blogspot.kr 7
http://webcache.googleusercontent.com 4
http://dayafterneet.blogspot.fr 3
http://dayafterneet.blogspot.de 3
http://dayafterneet.blogspot.tw 2
http://dayafterneet.blogspot.co.uk 2
http://translate.googleusercontent.com 2
http://slidess.ddo.jp 1
http://dayafterneet.blogspot.in 1
http://www.feedspot.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

  • 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 / Reducer) •シンプルなため制約が大きく、限定的な手法しか 用いることができない。 •その中で、MapReduceにおけるデザインパターン 的なものや、問題解決のテクニックを紹介。Data Intensive Text Processing with MapReduce #3 3
  • #3 MapReduce Algorithm Design 第三章:MapReduce アルゴリズムの設計 •ローカル集約 •pairsとstripes •相対頻度の計算 •セカンダリソート •リレーショナルな結合Data Intensive Text Processing with MapReduce #3 4
  • ローカル集約Data Intensive Text Processing with MapReduce #3 5
  • Local Aggregation ローカル集約 •HadoopではMap→Reduce間の受け渡しの際に中 間データをディスクに書き込む •オーバーヘッドが大きい •中間データの削減を行う事で処理効率がアップす るData Intensive Text Processing with MapReduce #3 6
  • Local Aggregation ローカル集約 •問題設定:さだまさしの歌詞から頻出単語を抽 出。 •データ元:http://www.cai-insect.jp/sada/Data Intensive Text Processing with MapReduce #3 7
  • Local Aggregation ローカル集約 •標準的なMapReduce処理 ドキュメント中に語が出現するごとにEmit • https://gist.github.com/3475182 https://gist.github.com/3475195Data Intensive Text Processing with MapReduce #3 8
  • Local Aggregation ローカル集約 •連想配列を用いてドキュメントごとに語のカウン トを集計してEmit(in-mapper combining) • https://gist.github.com/3475211Data Intensive Text Processing with MapReduce #3 9
  • Local Aggregation ローカル集約 •連想配列をクラス内で保持し、すべてのドキュメ ント中の語のカウントを集計した後にEmit • https://gist.github.com/3475214Data Intensive Text Processing with MapReduce #3 10
  • Local Aggregation ローカル集約 •in-mapper combining のメリット •Map→Reduceの受け渡し回数を減らすことで パフォーマンスの向上が期待できる。 •デメリット •Mapタスクのメモリ枯渇に注意 •データ出現パターンによってはあまり有効でな いケースもある。Data Intensive Text Processing with MapReduce #3 11
  • Local Aggregation ローカル集約 •in-mapper combiningのnaiveな改善(メモリ関連) •https://gist.github.com/3475348 •定期的にMapの内容をフラッシュData Intensive Text Processing with MapReduce #3 12
  • pairsとstripesData Intensive Text Processing with MapReduce #3 13
  • pairs and stripes pairsとstripes •複合型のキーの集約テクニック •一例:文章の中から語の共起頻度を算出する •共起:ある単語がある文章中に出たとき、その 文章中に別の限られた単語が頻繁に出現するこ と。(wikipedia) •「私はさだまさしが好きです。」 →「私:さだまさし」「私:好き」...Data Intensive Text Processing with MapReduce #3 14
  • pairs and stripes pairsとstripes •共起語抽出の情報量→基本的にO(n^2) •「私はさだまさしが好きです。」 →「私:は」「私:さだまさし」「私:が」...  「好き:です」 私 は さだまさし が 好き です は (私) さだまさし が 好き です さだまさし (私) (は) が 好き です が (私) (は) (さだまさし) 好き です 好き (私) (は) (さだまさし) (が) です です (私) (は) (さだまさし) (が) (好き)Data Intensive Text Processing with MapReduce #3 15
  • pairs and stripes pairsとstripes •問題設定:さだまさしの歌詞から頻出する共起語 を抽出。 •データ元:http://www.cai-insect.jp/sada/Data Intensive Text Processing with MapReduce #3 16
  • 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
  • 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
  • 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
  • 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の出現頻度だけでなく、相 対頻度(条件付き確率?)が取得したい場合があ る。 •そのためには語wの出現頻度(式右下部)を算出 する必要がある。Data Intensive Text Processing with MapReduce #3 22
  • 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
  • セカンダリソートData Intensive Text Processing with MapReduce #3 24
  • Secondary Sort セカンダリソート •Keyだけでなく、Valueでもソートをしたい 1.Reduceの中でソート 2.Map→Reduceの際に、ソートしたいValueを Keyに含めてしまう。 (value-to-key conversion)Data Intensive Text Processing with MapReduce #3 25
  • Secondary Sort セカンダリソート •問題設定:さだまさしのコンサート会場のリスト を解析 •Sort1:コンサート会場 Sort2:コンサート実施年Data Intensive Text Processing with MapReduce #3 26
  • 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
  • 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
  • リレーショナルな結合Data Intensive Text Processing with MapReduce #3 29
  • 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
  • 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
  • Relational Join リレーショナルな結合 •Memory-Backed Join •参考: http://d.hatena.ne.jp/wyukawa/20110818/1313670105Data Intensive Text Processing with MapReduce #3 32
  • Bibliography 参考文献(書籍以外) •http://www.slideshare.net/nokuno/ hadoopreading05-data-intensive3 •http://d.hatena.ne.jp/wyukawa/ 20111002/1317550750Data Intensive Text Processing with MapReduce #3 33
  • ご清聴 ありがとうございましたData Intensive Text Processing with MapReduce #3 34