Riakを利用したパーソナライズ事例
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

Riakを利用したパーソナライズ事例

  • 1,606 views
Uploaded on

2014年6月4日(水)、Bashoジャパン株式会社主催「Riak Meetup Tokyo #04」内の、Yahoo! JAPANからの発表です。

2014年6月4日(水)、Bashoジャパン株式会社主催「Riak Meetup Tokyo #04」内の、Yahoo! JAPANからの発表です。

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,606
On Slideshare
1,570
From Embeds
36
Number of Embeds
5

Actions

Shares
Downloads
19
Comments
0
Likes
12

Embeds 36

https://twitter.com 21
http://blog.0-8.in 6
http://cptl.corp.yahoo.co.jp 5
http://ohtaman.github.io 3
https://www.chatwork.com 1

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. ヤフー株式会社 Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. 2014/6/4 Riak を利用したパーソナライズ事例 仁科 朋也 tonishin@yahoo-corp.jp
  • 2. Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. P2自己紹介 • 氏名: 仁科 朋也 • 入社年月: 2010年4月(新卒) • 担当業務: レコメンデーションシステム • システム設計、開発、運用 • ストレージ設置、運用 • 配信システム(APIのようなもの)の開発、運用
  • 3. Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. P3agenda • システムについて • パーソナライズ事例 • システム概要 • 格納しているデータ • Riak について • サーバ構成と設定・監視 • クライアント • 運用事例
  • 4. Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. P4agenda • システムについて • パーソナライズ事例 • システム概要 • 格納しているデータ • Riak について • サーバ構成と設定・監視 • クライアント • 運用事例
  • 5. Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. P5パーソナライズ事例 スマートフォン・タブレットのY!トップページの 『あなたにお勧め』
  • 6. Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. P6agenda • システムについて • パーソナライズ事例 • システム概要 • 格納しているデータ • Riak について • サーバ構成と設定・監視 • クライアント • 運用事例
  • 7. Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. P7レコメンドシステムについて(はじめに) 社外秘の情報を含むため、詳細説明は省かせて頂き、 今回は以下の事項をご紹介します • レコメンドシステム概要 • ユーザデータ作成フロー
  • 8. Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. P8レコメンドシステム(概要) Y!TOP Riak ユーザデータ コンテンツ ストレージ コンテンツデータ Optimizer (API)
  • 9. Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. P9ユーザデータ作成フロー(ユーザの行動) Y!ニュース ・ ・ ・ 各サービス Y!検索
  • 10. Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. P10ユーザデータ作成フロー(スコアリング) Y!ニュース ・ ・ ・ ログデータ Hadoop ユーザデータ 各サービス Y!検索 ユーザに紐づく、ワードとそのスコア
  • 11. Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. P11ユーザデータ作成フロー(アップロード) Y!ニュース ・ ・ ・ ログデータ Hadoop ユーザデータ Riak ユーザデータ 各サービス Y!検索 Uploader
  • 12. Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. P12ユーザデータ作成フロー(提供) Y!ニュース ・ ・ ・ ログデータ Hadoop ユーザデータ Riak ユーザデータ Optimizer (API) レコメンド データ生成 ロジック 各サービス Y!検索 Uploader Y!TOP
  • 13. Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. P13agenda • システムについて • パーソナライズ事例 • レコメンドシステムについて • 格納しているデータについて • Riak について • サーバ構成と設定・監視 • 運用事例
  • 14. Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. P14格納するデータ • データの中身 • ユーザに対するワードとスコア • 格納の仕方 • Bucket: ユーザを識別するためのユニークID(13〜256Byte) • Key: スコアの計算ロジック等の識別子(5〜10Byteくらい) • Object: ワードとスコアの組(平均2KB) ロジックA ロジックB サッカー(0.894), W杯(0.734) 長友 佑都(0.842),香川 真司 (0.795) Key Object -> スコアの計算ロジックによって、複数のパターンがつく
  • 15. Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. P15格納するデータ • Write • 50〜100GBのデータを一日数回 • Read • ピーク時1,200 qps(災害時などのピークは2,000qps越え) • レスポンス300 ms 以内
  • 16. Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. P16agenda • システムについて • パーソナライズ事例 • システム概要 • 格納しているデータ • Riak について • サーバ構成と設定・監視 • クライアント • 運用事例
  • 17. Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. P17なぜRiak を選んだか 一言でいうと「運用面が魅力的だった」 • 高い耐障害性 • スケーラビリティが高い
  • 18. Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. P18agenda • システムについて • パーソナライズ事例 • システム概要 • 格納しているデータ • Riak について • サーバ構成と設定・監視 • クライアント • 運用事例
  • 19. Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. P19サーバ構成・設定等 • サーバ22台 • SAS HDD 300GB*4 • メモリ 48GB • Raid 0 • ファイルシステム xfs • Riak • バージョン 1.4.0 • Ring size 256 • Back end eleveldb • レプリケーション 3
  • 20. Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. P20サーバ構成・設定等 • サーバ22台 • SAS HDD 300GB*4 • メモリ 48GB • Raid 0 • ファイルシステム xfs • Riak • バージョン 1.4.0 • Ring size 256 • Back end eleveldb • レプリケーション 3 ディスクI/Oのチューニング
  • 21. Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. P21ディスクI/Oのチューニング 個人的にディスクI/O のチューニングが Riak のパフォーマンスの大部分を占めている と思っています。 1. Riak の書き込みバッファの変更 2. Raid 構成の変更 3. ファイルシステムの変更 4. I/Oスケジューラの変更
  • 22. Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. P22ディスクI/Oのチューニング 1. Riak の書き込みバッファの変更 - write_buffer_size_min - write_buffer_size_max 2. Raid 構成の変更 - Raid0 3. ファイルシステムの変更 - xfs 4. I/Oスケジューラの変更 - deadline
  • 23. Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. P23ディスクI/O 現在はピーク時30%前後と落ち着いているが、 90%前後出ていた時期があった・・・ WriteBuffer の変更とRaid の変更のみ -> xfs はとても効果的
  • 24. Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. P24サーバ構成・設定等 • サーバ22台 • SAS HDD 300GB*4 • メモリ 48GB • Raid 0 • ファイルシステム xfs • Riak • バージョン 1.4.0 • Ring size 256 • Back end eleveldb • レプリケーション 3
  • 25. Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. P25BackEnd について • Bitcask • bucket + key が全てメモリ上に乗っている • レイテンシ重視のハッシュ構造 • eleveldb • bucket + key が一部しかメモリに乗らない • ツリー型で保持 • bucket + key が多いときに有利 以下の理由からeleveldb を採用 • 様々なロジックを追加したい • ユーザ数の増加
  • 26. Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. P26その他のチューニング • sysctl • ファイルディスクリプタ • fs.file-max=65535 • ネットワーク関係 • net.core.wmem_max = 33554432 • net.core.rmem_max = 33554432 • net.ipv4.tcp_max_syn_backlog = 40000 • etc … • 仮想メモリ • vm.swappiness = 0 • iptables • アクセス制限 • ネットワーク制限
  • 27. Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. P27パフォーマンステスト時のリソース リリース前のパフォーマンステスト時の リソースの使用状況(dstat コマンドにて取得) ※メモリを全て解放した後測定しています
  • 28. Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. P28パフォーマンステスト時のリソース リリース前のパフォーマンステスト時の リソースの使用状況(dstat コマンドにて取得) ※メモリを全て解放した後測定しています
  • 29. Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. P29リソースの使用状況 • Disk I/O: 30%前後 • CPU: 10%前後 • メモリ: 60%前後 • ネットワーク: 10Mbps〜20Mbps
  • 30. Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. P30監視について • Riak のプロセスが生きているか • 300ms 以内に返せているか • ディスクI/O • メモリ • ネットワーク帯域
  • 31. Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. P31agenda • システムについて • パーソナライズ事例 • システム概要 • 格納しているデータ • Riak について • サーバ構成と設定・監視 • クライアント • 運用事例
  • 32. Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. P32クライアントについて 基本的にパフォーマンス重視の使用方法 • (システムの都合上)C++ のクライアントを使用 • パフォーマンスを求めるため、Riak への接続はpb を使用 • read quorum = 1 3つのレプリケーションからの1つでもレスポンスがあればOK • 使用したクライアントではタイムアウト制御が出来なかったため、 boost::thread を利用して強引にタイムアウト制御を実装
  • 33. Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. P33agenda • システムについて • パーソナライズ事例 • システム概要 • 格納しているデータ • Riak について • サーバ構成と設定・監視 • クライアント • 運用事例
  • 34. Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. P34運用事例 半年以上運用して以下の対応を行いました。 • サーバの追加 • サーバダウン
  • 35. Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. P35サーバの追加 1. 監視設定・sysctl 等の設定変更 2. Riak のインストール 3. Riak へサーバを追加する riak-admin cluster join riak@xxx.xx.xx.xx riak-admin cluster plan riak-admin cluster commit
  • 36. Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. P36サーバ投入時の帯域 • 新クラスタ作成後、初めてデータを流したとき • 既存クラスタにサーバを追加したとき ->帯域の使用量が多くなる Transfer-limit でしぼる riak-admin transfer-limit riak@xxx.xxx.xxx.xxx <設定値>
  • 37. Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. P37サーバダウン 深夜に一台のサーバがハードウェア障害によりダウン -> ダウンした時に接続していたクライアントが一度エラーを出力 <応急対応開始> • 他のサーバから問題なく引かれていることを確認 • アラートの通知を切る <応急対応終了> <翌日出社後> • サーバリプレイスを行う サーバがダウンしたのは一度だけ
  • 38. Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. P38最後に Riak を使ってみてどうだったか • 運用面が優れている • チューニング大事 • 社内に頼れる先輩がいてありがたかった
  • 39. Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved. P39 ご清聴ありがとうございました
  • 40. Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved.