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.

Riak Search 2.0を使ったデータ集計

2,392 views

Published on

Published in: Technology
  • Be the first to comment

Riak Search 2.0を使ったデータ集計

  1. 1. Riak  Search  2.0を使った   データ集計 Bashoジャパン(株)   坪坂正志
  2. 2. Riakとは •  分散Key-­‐Value  Store   •  データを複数のサーバに分散して格納するこ とにより高い可用性と拡張性を実現
  3. 3. Key-­‐Value  Storeの問題点 •  DBに入っているすべてのデータについて処理 をすることが難しい   •  RiakにはMapReduce機能はついてはいるが ErlangかJSでプログラムを書く必要があるなど 難易度が高い
  4. 4. Riak  Search  2.0 •  元々Riak  1.xバージョンでは検索機能は存在 した   •  しかしマルチバイト対応していない、機能が少 ないなどの問題があった   •  2.0からバックエンドにSolrを使うことによりマ ルチバイト対応やStats  Componentなどの処 理が可能に
  5. 5. Solrの機能を使うと •  SolrのStatsComponentを利用することによって、特定フィー ルドの個数や合計、平均などが計算可能となっている   –  hFp://wiki.apache.org/solr/StatsComponent     •  SQLでいうところのselect  sum(field)  ~的な処理が可能に   –  Facetsの機能を使うことによりgroup  by的な処理も可能となる   •  SolrをAnalyQcs  PlaSormに利用している事例としては以下 の記事が参考となる   –  hFp://www.lucenerevoluQon.org/sites/default/files/Building %20a%20Real-­‐Qme,%20Big%20Data%20AnalyQcs%20PlaSorm %20with%20Solr.pdf  
  6. 6. Riak  Searchを使った集計 •  各Riakサーバーで動いてるSolrプロセスが個別 に集計処理を行い、結果を一つにまとめる   –  複数サーバでの検索はSolrのDistributed  Searchの機 能を利用   –  サーバ内での集計処理は独立に行われるのでサー バを増やすことによってスケールアウトが可能
  7. 7. Solr  Cloudとの違い •  SolrのバイナリがRiakに同梱されているので Zookeeprなどの他のコンポネントを立ち上げ る必要が無い   •  事前にshard数を決める必要が無い   – 必要に応じていくらでもサーバの追加が可能と なっている  
  8. 8. 適応イメージ •  Riakに格納した広告ログから広告主ごとのク リック数、インプレッション数などを集計する   •  Riakに格納したセンサデータから特定時間の センサの出力の平均値を出したりすることが できる  
  9. 9. テストに利用したデータ •  データマイニングのコンテストで用いられた検 索連動型広告のログデータ   – hFps://www.kddcup2012.org/c/kddcup2012-­‐ track2     – 各行にはclick数,imps数,広告ID,表示位置,広告主 ID,UserIDなどが含まれる     – 実験では一部のフィールドを利用   •  {"click_i":0,"imps_i”  1,"adid_s":"20665700",   "advid_s":"34004”,"pos_i":1,"kwid_s":"20775"}
  10. 10. テストに利用したデータ •  実際のデータは1億4000万件あるが、クライ アントからのデータのアップロードに時間がか かるので先頭2000万件を利用   – EC2の料金を節約したかった。。   – アップロードの際にはRiak  Cluster  3台で構築   •  3台で構築した場合物理サーバにデータが3重化され ないことがあるのでProducQonでは5台以上を推奨
  11. 11. Riak  Searchを使ってできるクエリ •  特定の広告主IDに対するClickの合計を計算す る   –  q=advid_s:hoge&rows=0&stats=true&stats.field=click_i   •  さらにポジションごとのクリック数の合計を計算する   –  +  &stats.facet=pos_i  
  12. 12. Example  Query •  adid_s=20030165のものについて、click_iフィールドの統計値を 出力
  13. 13. クエリのパフォーマンスについて •  特定の広告主を指定してclick/impsの合計を 投げた場合   – 数msec程度で結果が帰ってくる   •  全体のclick/impsの合計を求めた場合   – 数百msec程度のorder   •  全体的に書き込みを行ってる途中のときと書 き込みを行ってないときでパフォーマンスが 大きく変わった  
  14. 14. サーバを増やしたときの挙動 •  Riakクラスタを3台=>6台に変更   •  増やしているときは多少のレスポンスの低下が見られた   •  サーバを追加するときも追加の設定やシステムの停止が 一切なく、簡単なコマンドで追加可能   •  変更終了後各サーバの保持している文章量は半分に   –  データが増えていったときもサーバ追加することによりシステム の停止なく対応可能   •  応答速度は今使っているデータにおいてはそこまで変わら なかった   –  より大規模なデータで試験する必要がある   –  実際のところ2000万件程度であればMySQL1台でも扱える
  15. 15. 実験しててはまったところ •  割当メモリが少ないとSolrが落ちる   – 設定のsearch.solr.jvm_opQonsのXms,Xmxの部分 を増やす   •  最初シングルプロセスでinsertのクライアント を書いたところ書き込みのパフォーマンスが でない   – 並列で書き込みをするように処理を変更するよう にして改善
  16. 16. 今後の課題 •  より大規模なデータにおけるテスト   – 特に実験環境貸してくれる方とか募集中   •  今後Solr5.0でAnalyQcs周りが強化されるので、 Riak  SearchでのAnalyQcsも強化される   – hFps://issues.apache.org/jira/browse/SOLR-­‐5302  

×