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 について
• サーバ構成と設定・監視
• 運用事例
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 を使ってみてどうだったか
• 運用面が優れている
• チューニング大事
• 社内に頼れる先輩がいてありがたかった