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

103 Views

June 06, 14

スライド概要

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

profile-image

2023年10月からSpeaker Deckに移行しました。最新情報はこちらをご覧ください。 https://speakerdeck.com/lycorptech_jp

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

Confidential :Discussion purpose only Riak を利用したパーソナライズ事例 2014/6/4 ヤフー株式会社 仁科 朋也 tonishin@yahoo-corp.jp Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved.

2.

自己紹介 P2 • 氏名: 仁科 朋也 • 入社年月: 2010年4月(新卒) • 担当業務: レコメンデーションシステム • システム設計、開発、運用 • ストレージ設置、運用 • 配信システム(APIのようなもの)の開発、運用 Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved.

3.

agenda P3 • システムについて • パーソナライズ事例 • システム概要 • 格納しているデータ • Riak について • サーバ構成と設定・監視 • クライアント • 運用事例 Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved.

4.

agenda P4 • システムについて • パーソナライズ事例 • システム概要 • 格納しているデータ • Riak について • サーバ構成と設定・監視 • クライアント • 運用事例 Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved.

5.

パーソナライズ事例 P5 スマートフォン・タブレットのY!トップページの 『あなたにお勧め』 Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved.

6.

agenda P6 • システムについて • パーソナライズ事例 • システム概要 • 格納しているデータ • Riak について • サーバ構成と設定・監視 • クライアント • 運用事例 Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved.

7.

レコメンドシステムについて(はじめに) P7 社外秘の情報を含むため、詳細説明は省かせて頂き、 今回は以下の事項をご紹介します • レコメンドシステム概要 • ユーザデータ作成フロー Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved.

8.

レコメンドシステム(概要) P8 Riak ユーザデータ Y!TOP Optimizer (API) コンテンツ ストレージ コンテンツデータ Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved.

9.

ユーザデータ作成フロー(ユーザの行動) P9 各サービス Y!ニュース Y!検索 ・ ・ ・ Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved.

10.

ユーザデータ作成フロー(スコアリング) 各サービス P10 Hadoop Y!ニュース ログデータ Y!検索 ・ ・ ・ ユーザデータ ユーザに紐づく、ワードとそのスコア Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved.

11.

ユーザデータ作成フロー(アップロード) 各サービス P11 Hadoop Y!ニュース ログデータ Y!検索 ・ ・ ・ ユーザデータ Riak ユーザデータ Uploader Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved.

12.

ユーザデータ作成フロー(提供) P12 各サービス Hadoop Y!ニュース ログデータ Y!検索 ・ ・ ・ ユーザデータ Y!TOP Optimizer (API) レコメンド データ生成 ロジック Confidential :Discussion purpose only Riak ユーザデータ Uploader Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved.

13.

agenda P13 • システムについて • パーソナライズ事例 • レコメンドシステムについて • 格納しているデータについて • Riak について • サーバ構成と設定・監視 • 運用事例 Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved.

14.

格納するデータ P14 • データの中身 • ユーザに対するワードとスコア • 格納の仕方 • Bucket: ユーザを識別するためのユニークID(13〜256Byte) • Key: スコアの計算ロジック等の識別子(5〜10Byteくらい) • Object: ワードとスコアの組(平均2KB) Key Object ロジックA サッカー(0.894), W杯(0.734) ロジックB 長友 佑都(0.842),香川 真司 (0.795) -> スコアの計算ロジックによって、複数のパターンがつく Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved.

15.

格納するデータ P15 • Write • 50〜100GBのデータを一日数回 • Read • ピーク時1,200 qps(災害時などのピークは2,000qps越え) • レスポンス300 ms 以内 Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved.

16.

agenda P16 • システムについて • パーソナライズ事例 • システム概要 • 格納しているデータ • Riak について • サーバ構成と設定・監視 • クライアント • 運用事例 Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved.

17.

なぜRiak を選んだか P17 一言でいうと「運用面が魅力的だった」 • 高い耐障害性 • スケーラビリティが高い Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved.

18.

agenda P18 • システムについて • パーソナライズ事例 • システム概要 • 格納しているデータ • Riak について • サーバ構成と設定・監視 • クライアント • 運用事例 Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved.

19.

サーバ構成・設定等 P19 • サーバ22台 • • • • SAS HDD 300GB*4 メモリ 48GB Raid 0 ファイルシステム xfs • Riak • • • • バージョン 1.4.0 Ring size 256 Back end eleveldb レプリケーション 3 Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved.

20.

サーバ構成・設定等 P20 • サーバ22台 • • • • SAS HDD 300GB*4 メモリ 48GB Raid 0 ファイルシステム xfs ディスクI/Oのチューニング • Riak • • • • バージョン 1.4.0 Ring size 256 Back end eleveldb レプリケーション 3 Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved.

21.

ディスクI/Oのチューニング P21 個人的にディスクI/O のチューニングが Riak のパフォーマンスの大部分を占めている と思っています。 1. 2. 3. 4. Riak の書き込みバッファの変更 Raid 構成の変更 ファイルシステムの変更 I/Oスケジューラの変更 Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved.

22.

ディスクI/Oのチューニング P22 1. Riak の書き込みバッファの変更 - write_buffer_size_min - write_buffer_size_max 2. Raid 構成の変更 - Raid0 3. ファイルシステムの変更 - xfs 4. I/Oスケジューラの変更 - deadline Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved.

23.

ディスクI/O P23 WriteBuffer の変更とRaid の変更のみ 現在はピーク時30%前後と落ち着いているが、 90%前後出ていた時期があった・・・ -> xfs はとても効果的 Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved.

24.

サーバ構成・設定等 P24 • サーバ22台 • • • • SAS HDD 300GB*4 メモリ 48GB Raid 0 ファイルシステム xfs • Riak • • • • バージョン 1.4.0 Ring size 256 Back end eleveldb レプリケーション 3 Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved.

25.

BackEnd について P25 • Bitcask • • bucket + key が全てメモリ上に乗っている レイテンシ重視のハッシュ構造 • eleveldb • • • bucket + key が一部しかメモリに乗らない ツリー型で保持 bucket + key が多いときに有利 以下の理由からeleveldb を採用 • 様々なロジックを追加したい • ユーザ数の増加 Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved.

26.

その他のチューニング 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 • • アクセス制限 ネットワーク制限 Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved.

27.

パフォーマンステスト時のリソース P27 リリース前のパフォーマンステスト時の リソースの使用状況(dstat コマンドにて取得) ※メモリを全て解放した後測定しています Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved.

28.

パフォーマンステスト時のリソース P28 リリース前のパフォーマンステスト時の リソースの使用状況(dstat コマンドにて取得) ※メモリを全て解放した後測定しています Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved.

29.

リソースの使用状況 • • • • Disk I/O: CPU: メモリ: ネットワーク: Confidential :Discussion purpose only P29 30%前後 10%前後 60%前後 10Mbps〜20Mbps Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved.

30.

監視について • • • • • P30 Riak のプロセスが生きているか 300ms 以内に返せているか ディスクI/O メモリ ネットワーク帯域 Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved.

31.

agenda P31 • システムについて • パーソナライズ事例 • システム概要 • 格納しているデータ • Riak について • サーバ構成と設定・監視 • クライアント • 運用事例 Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved.

32.

クライアントについて P32 基本的にパフォーマンス重視の使用方法 • (システムの都合上)C++ のクライアントを使用 • パフォーマンスを求めるため、Riak への接続はpb を使用 • read quorum = 1 3つのレプリケーションからの1つでもレスポンスがあればOK • 使用したクライアントではタイムアウト制御が出来なかったため、 boost::thread を利用して強引にタイムアウト制御を実装 Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved.

33.

agenda P33 • システムについて • パーソナライズ事例 • システム概要 • 格納しているデータ • Riak について • サーバ構成と設定・監視 • クライアント • 運用事例 Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved.

34.

運用事例 P34 半年以上運用して以下の対応を行いました。 • サーバの追加 • サーバダウン Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved.

35.

サーバの追加 P35 1. 監視設定・sysctl 等の設定変更 2. Riak のインストール 3. Riak へサーバを追加する riak-admin cluster join riak@xxx.xx.xx.xx riak-admin cluster plan riak-admin cluster commit Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved.

36.

サーバ投入時の帯域 P36 • 新クラスタ作成後、初めてデータを流したとき • 既存クラスタにサーバを追加したとき ->帯域の使用量が多くなる Transfer-limit でしぼる riak-admin transfer-limit riak@xxx.xxx.xxx.xxx <設定値> Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved.

37.

サーバダウン P37 深夜に一台のサーバがハードウェア障害によりダウン -> ダウンした時に接続していたクライアントが一度エラーを出力 <応急対応開始> • 他のサーバから問題なく引かれていることを確認 • アラートの通知を切る <応急対応終了> <翌日出社後> • サーバリプレイスを行う サーバがダウンしたのは一度だけ Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved.

38.

最後に P38 Riak を使ってみてどうだったか • 運用面が優れている • チューニング大事 • 社内に頼れる先輩がいてありがたかった Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved.

39.

P39 ご清聴ありがとうございました Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved.

40.

Confidential :Discussion purpose only Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved.