Your SlideShare is downloading. ×
TinyMapReduce on ruby
TinyMapReduce on ruby
TinyMapReduce on ruby
TinyMapReduce on ruby
TinyMapReduce on ruby
TinyMapReduce on ruby
TinyMapReduce on ruby
TinyMapReduce on ruby
TinyMapReduce on ruby
TinyMapReduce on ruby
TinyMapReduce on ruby
TinyMapReduce on ruby
TinyMapReduce on ruby
TinyMapReduce on ruby
TinyMapReduce on ruby
TinyMapReduce on ruby
TinyMapReduce on ruby
TinyMapReduce on ruby
TinyMapReduce on ruby
TinyMapReduce on ruby
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

TinyMapReduce on ruby

1,875

Published on

TinyMapReduce on ruby

TinyMapReduce on ruby

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,875
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. KVSをWebアプリのメインストレージにしたら、集計バッチをMapReduceでやるはめになったでござるの巻
    松本 一輝
    Lang-8, Inc.
  • 2. TinyMapReduce
    DRuby上で動く原始的なMapReduceのサンプル
    200行くらい
    対障害性ゼロ
    Lang-8でサイトデータ等の分析に使用
    http://github.com/kazuki-m/TinyMapReduce
  • 3. MapReduce?
    膨大なデータ群に対して、ユーザが定義するMap関数、Combiner関数、Reduce関数を適用するためのフレームワーク
    データを細かく分割することにより、並列実行が可能。リニアにスケールする
    Googleの中の人が発案
  • 4. MapReduce 概要
    例:1~11までの自然数に含まれる2の倍数および3の倍数の個数をカウントする。
    [1,2,3,4,5,6,7,8,9,10,11]
    分割数 M=3
    [1,2,3,4]
    [9,10,11]
    [5,6,7,8]
  • 5. Map関数:Value->Hash
    1 , 2 , 3 , 4
    { } , { “2の倍数” => 1 } , { “3の倍数” => 1 } , { “2の倍数” => 1 }
    5 , 6 , 7 , 8
    { } , { “2の倍数” => 1 , “3の倍数” => 1 } , { } , { “2の倍数” => 1 }
    9, 10, 11
    {“3の倍数” => 1}, {“2の倍数” => 1} , { }
  • 6. Combiner関数:HashのArray->Hash
    [ { } , { “2の倍数” => 1 } , { “3の倍数” => 1 } , { “2の倍数” => 1 } ]
    { “2の倍数” => 2 , “3の倍数” => 1 }
    [{ } , { “2の倍数” => 1 } , { “3の倍数” => 1 } , { “2の倍数” => 1 } ]
    { “2の倍数” => 2 , “3の倍数” => 1 }
    [ {“3の倍数” => 1}, {“2の倍数” => 1} , { } ]
    { “3の倍数” => 1, “2の倍数” => 1 }
  • 7. Reduce関数:Array -> Value
    Key:“2の倍数”
    [ 2,2,1] -> 5
    Key:“3の倍数”
    [ 1,1 ,1] -> 3
  • 8. MapReduceの何が嬉しいのか
    一見、まわりくどい
     (シングルマシンで実行したときの
      効率はとても悪い)
    しかし、リニアにスケールする
  • 9. MapReduce 構成
    Master
    Worker
    Worker
    Worker
    Worker
    Worker
    Worker
    Worker
    入力データ
  • 10. Masterが指令
    Master
    Worker
    Worker
    Worker
    Worker
    Worker
    Worker
    Worker
    入力データ
  • 11. 入力データを分割取得
    Master
    Worker
    Worker
    Worker
    Worker
    Worker
    Worker
    Worker
    #2
    #m
    #1
    ・・・
    入力データ
  • 12. Map/Combiner関数を適用・中間結果出力
    Master
    Worker
    Worker
    Worker
    Worker
    Worker
    Worker
    Worker
    #2
    #m
    #1
    ・・・
    中間データ
    入力データ
  • 13. Shuffle: 同じKeyを寄せ集め
    Master
    Worker
    Worker
    Worker
    Worker
    Worker
    Worker
    Worker
    中間データ
    #2
    #m
    #1
    ・・・
    入力データ
  • 14. 中間データを分割取得
    Master
    Worker
    Worker
    Worker
    Worker
    Worker
    Worker
    Worker
    #2
    #r
    #1
    #2
    #m
    #1
    ・・・
    ・・・
    中間データ
    入力データ
  • 15. Reduce関数を適用・結果を出力
    Master
    Worker
    Worker
    Worker
    Worker
    Worker
    Worker
    Worker
    #1…
    #2
    #r
    #1
    #2
    #m
    #1
    ・・・
    ・・・
    中間データ
    入力データ
    出力データ
  • 16. DEMO
  • 17. RDBからKVSへ
    レコードがスキーマレスになる
      -> プライマリキーでしか叩けない
      ->SQLで集計プログラムを作れない
    MapReduceの採用により、
    DWHに匹敵する分析力を
    分散KVS上で実現可能
  • 18. 長所
    高速(IOがボトルネックにならない)
      ※MapReduceは分散KVSとセットで
      運用しないと(あまり)意味がない。
      (Fairy& Roma、
       MapReduce & GFS/BigTable 等)
    集計プログラムの作成が容易
  • 19. 短所
    インフラ準備に手間がかかる
  • 20. まとめ
          ☆ チン     マチクタビレタ~                        マチクタビレタ~       ☆ チン  〃  ∧_∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄        ヽ ___\(\・∀・) < Fairyまだ~?            \_/⊂ ⊂_ )   \________          / ̄ ̄ ̄ ̄ ̄ ̄ /|       | ̄ ̄ ̄ ̄ ̄ ̄ ̄|  |       |  愛媛みかん  |/

×