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

Weitere ähnliche Inhalte

Ähnlich wie TinyMapReduce on ruby

SQLマッピングフレームワーク「Kobati」のはなし
SQLマッピングフレームワーク「Kobati」のはなしSQLマッピングフレームワーク「Kobati」のはなし
SQLマッピングフレームワーク「Kobati」のはなしKazuki Minamitani
 
Code iq×japanr 公開用
Code iq×japanr 公開用Code iq×japanr 公開用
Code iq×japanr 公開用Nobuaki Oshiro
 
文献紹介:Rethinking Data Augmentation for Image Super-resolution: A Comprehensive...
文献紹介:Rethinking Data Augmentation for Image Super-resolution: A Comprehensive...文献紹介:Rethinking Data Augmentation for Image Super-resolution: A Comprehensive...
文献紹介:Rethinking Data Augmentation for Image Super-resolution: A Comprehensive...Toru Tamaki
 
20190119 aws-study-pg-extension
20190119 aws-study-pg-extension20190119 aws-study-pg-extension
20190119 aws-study-pg-extensionToshi Harada
 
B34 Extremely Tuned Hadoop Cluster by Daisuke Hirama
B34 Extremely Tuned Hadoop Cluster by  Daisuke HiramaB34 Extremely Tuned Hadoop Cluster by  Daisuke Hirama
B34 Extremely Tuned Hadoop Cluster by Daisuke HiramaInsight Technology, Inc.
 
20171220_hbstudy80_pgstrom
20171220_hbstudy80_pgstrom20171220_hbstudy80_pgstrom
20171220_hbstudy80_pgstromKohei KaiGai
 
OSC2011 Tokyo/Spring Hadoop入門
OSC2011 Tokyo/Spring Hadoop入門OSC2011 Tokyo/Spring Hadoop入門
OSC2011 Tokyo/Spring Hadoop入門Shinichi YAMASHITA
 
20181110 fok2018-pg-extension
20181110 fok2018-pg-extension20181110 fok2018-pg-extension
20181110 fok2018-pg-extensionToshi Harada
 
20130626 kawasaki.rb NKT77
20130626 kawasaki.rb NKT7720130626 kawasaki.rb NKT77
20130626 kawasaki.rb NKT77nkt77
 
GraphX によるグラフ分析処理の実例と入門
GraphX によるグラフ分析処理の実例と入門GraphX によるグラフ分析処理の実例と入門
GraphX によるグラフ分析処理の実例と入門鉄平 土佐
 
Rが苦手な人にもRを使って頂くために~RcommanderとRook~
Rが苦手な人にもRを使って頂くために~RcommanderとRook~Rが苦手な人にもRを使って頂くために~RcommanderとRook~
Rが苦手な人にもRを使って頂くために~RcommanderとRook~Kazuya Wada
 
クラウド・アプリケーション・モデリングへのアプローチ
クラウド・アプリケーション・モデリングへのアプローチクラウド・アプリケーション・モデリングへのアプローチ
クラウド・アプリケーション・モデリングへのアプローチTomoharu ASAMI
 
BPStudy32 CouchDB 再入門
BPStudy32 CouchDB 再入門BPStudy32 CouchDB 再入門
BPStudy32 CouchDB 再入門Yohei Sasaki
 
PostgreSQL 10 新機能 @OSC 2017 Fukuoka
PostgreSQL 10 新機能 @OSC 2017 FukuokaPostgreSQL 10 新機能 @OSC 2017 Fukuoka
PostgreSQL 10 新機能 @OSC 2017 FukuokaShigeru Hanada
 

Ähnlich wie TinyMapReduce on ruby (20)

BigQuery読書会#2資料
BigQuery読書会#2資料BigQuery読書会#2資料
BigQuery読書会#2資料
 
SQLマッピングフレームワーク「Kobati」のはなし
SQLマッピングフレームワーク「Kobati」のはなしSQLマッピングフレームワーク「Kobati」のはなし
SQLマッピングフレームワーク「Kobati」のはなし
 
Code iq×japanr 公開用
Code iq×japanr 公開用Code iq×japanr 公開用
Code iq×japanr 公開用
 
MapReduce入門
MapReduce入門MapReduce入門
MapReduce入門
 
文献紹介:Rethinking Data Augmentation for Image Super-resolution: A Comprehensive...
文献紹介:Rethinking Data Augmentation for Image Super-resolution: A Comprehensive...文献紹介:Rethinking Data Augmentation for Image Super-resolution: A Comprehensive...
文献紹介:Rethinking Data Augmentation for Image Super-resolution: A Comprehensive...
 
20190119 aws-study-pg-extension
20190119 aws-study-pg-extension20190119 aws-study-pg-extension
20190119 aws-study-pg-extension
 
Tokyo r 25_lt_isobe
Tokyo r 25_lt_isobeTokyo r 25_lt_isobe
Tokyo r 25_lt_isobe
 
B34 Extremely Tuned Hadoop Cluster by Daisuke Hirama
B34 Extremely Tuned Hadoop Cluster by  Daisuke HiramaB34 Extremely Tuned Hadoop Cluster by  Daisuke Hirama
B34 Extremely Tuned Hadoop Cluster by Daisuke Hirama
 
20171220_hbstudy80_pgstrom
20171220_hbstudy80_pgstrom20171220_hbstudy80_pgstrom
20171220_hbstudy80_pgstrom
 
Scala on Hadoop
Scala on HadoopScala on Hadoop
Scala on Hadoop
 
OSC2011 Tokyo/Spring Hadoop入門
OSC2011 Tokyo/Spring Hadoop入門OSC2011 Tokyo/Spring Hadoop入門
OSC2011 Tokyo/Spring Hadoop入門
 
pg_bigmを用いた全文検索のしくみ(前編)
pg_bigmを用いた全文検索のしくみ(前編)pg_bigmを用いた全文検索のしくみ(前編)
pg_bigmを用いた全文検索のしくみ(前編)
 
20181110 fok2018-pg-extension
20181110 fok2018-pg-extension20181110 fok2018-pg-extension
20181110 fok2018-pg-extension
 
20130626 kawasaki.rb NKT77
20130626 kawasaki.rb NKT7720130626 kawasaki.rb NKT77
20130626 kawasaki.rb NKT77
 
GraphX によるグラフ分析処理の実例と入門
GraphX によるグラフ分析処理の実例と入門GraphX によるグラフ分析処理の実例と入門
GraphX によるグラフ分析処理の実例と入門
 
Rが苦手な人にもRを使って頂くために~RcommanderとRook~
Rが苦手な人にもRを使って頂くために~RcommanderとRook~Rが苦手な人にもRを使って頂くために~RcommanderとRook~
Rが苦手な人にもRを使って頂くために~RcommanderとRook~
 
クラウド・アプリケーション・モデリングへのアプローチ
クラウド・アプリケーション・モデリングへのアプローチクラウド・アプリケーション・モデリングへのアプローチ
クラウド・アプリケーション・モデリングへのアプローチ
 
BPStudy32 CouchDB 再入門
BPStudy32 CouchDB 再入門BPStudy32 CouchDB 再入門
BPStudy32 CouchDB 再入門
 
RAPIDS 概要
RAPIDS 概要RAPIDS 概要
RAPIDS 概要
 
PostgreSQL 10 新機能 @OSC 2017 Fukuoka
PostgreSQL 10 新機能 @OSC 2017 FukuokaPostgreSQL 10 新機能 @OSC 2017 Fukuoka
PostgreSQL 10 新機能 @OSC 2017 Fukuoka
 

TinyMapReduce on ruby