146 Views
August 06, 18
スライド概要
Apache Pulsar Meetup Japan #2 発表資料
https://japan-pulsar-user-group.connpass.com/event/94276/
2023年10月からSpeaker Deckに移行しました。最新情報はこちらをご覧ください。 https://speakerdeck.com/lycorptech_jp
レコメンドエンジンにおける Pulsarの利用 2018/08/03 ヤフー株式会社 築地 毅 & 森谷 大輔 Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved.
自己紹介 • 築地 毅 • ・社会人2年目 • ・レコメエンジンのバックエンド担当 • • Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. ↑ 今日はこのお話 2
レコメンドエンジン概略
システム構成 レコメ記事 キャッシュDB モデル (レコメ記事生成器) Pulsar クライアント レコメAPI Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 検索エンジン Feeder Pulsar 4
システム構成 レコメ記事作成 レコメ記事 キャッシュDB 検索エンジン ・表示用データ ・レコメ用記事特徴量 モデル (レコメ記事生成器) レコメ用記事データ作成 レコメ記事返却 Pulsar クライアント レコメAPI Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 検索エンジン Feeder Pulsar 5
システム構成 レコメ記事作成 レコメ記事 キャッシュDB 検索エンジン ・表示用データ ・レコメ用記事特徴量 モデル (レコメ記事生成器) レコメ用記事データ作成 レコメ記事返却 Pulsar クライアント レコメAPI Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 検索エンジン Feeder Pulsar 6
レコメ記事返却 レコメ記事 キャッシュDB モデル (レコメ記事生成器) Pulsar ・表示用データ ・レコメ用記事特徴量 クライアント Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. レコメAPI 検索エンジン 7
レコメ記事返却 レコメ記事 キャッシュDB ① ある記事用の レコメ記事を要求 モデル (レコメ記事生成器) Pulsar ・表示用データ ・レコメ用記事特徴量 クライアント Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. レコメAPI 検索エンジン 8
レコメ記事返却 レコメ記事 キャッシュDB モデル (レコメ記事生成器) 毎回レコメ記事作ってたらすぐにレスポンス返せない → キャッシュを利用するようにする ① ある記事用の レコメ記事を要求 Pulsar ・表示用データ ・レコメ用記事特徴量 クライアント Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. レコメAPI 検索エンジン 9
レコメ記事返却 ②レコメ記事を キャッシュから取得 レコメ記事 キャッシュDB ① ある記事用の レコメ記事を要求 モデル (レコメ記事生成器) Pulsar ・表示用データ ・レコメ用記事特徴量 クライアント ④ レコメ記事返却 Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. レコメAPI ③表示用データ取得 検索エンジン 10
レコメ記事返却 → レコメ記事作成 • キャッシュが無い: レコメ記事作成を行う レコメ記事 キャッシュDB モデル (レコメ記事生成器) Pulsar ・表示用データ ・レコメ用記事特徴量 クライアント Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. レコメAPI 検索エンジン 11
レコメ記事作成 • レコメ記事返却後… ④ レコメ記事作成 ⑤ レコメ記事をキャッシュ レコメ記事 キャッシュDB ② モデルが作成依頼を取得 モデル (レコメ記事生成器) ③ 記事特徴量を取得 ① レコメ記事作成を依頼 Pulsar ・表示用データ ・レコメ用記事特徴量 クライアント Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. レコメAPI 検索エンジン 12
レコメ記事作成 • レコメ記事返却後… ④ レコメ記事作成 ⑤ レコメ記事をキャッシュ レコメ記事 キャッシュDB ② モデルが作成依頼を取得 モデル (レコメ記事生成器) ③ 記事特徴量を取得 ① レコメ記事作成を依頼 Pulsar ・表示用データ ・レコメ用記事特徴量 クライアント レコメAPI 検索エンジン Point: Pulsarを使うことで,非同期にレコメ記事作成の依頼が可能 Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 13
システム構成 レコメ記事作成 レコメ記事 キャッシュDB 検索エンジン ・表示用データ ・レコメ用記事特徴量 モデル (レコメ記事生成器) レコメ用記事データ作成 レコメ記事返却 Pulsar クライアント レコメAPI Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 検索エンジン Feeder Pulsar 14
レコメ用記事データ作成 • Feeder • データ作成 表示用データ: 画像,タイトル,etc… 記事特徴量: 本文中の単語,etc… • 検索エンジンへのフィード 検索エンジン Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. Feeder Pulsar 15
レコメ用記事データ作成 • Feeder x Pulsar の運用 • 記事更新・削除メッセージ処理(通常運用) • 検索エンジンのリビルド(特殊運用) 全データの再作成 検索エンジン Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. Feeder Pulsar 16
レコメ用記事データ作成 • Feeder x Pulsar の運用 • 記事更新・削除メッセージ処理(通常運用) • 検索エンジンのリビルド(特殊運用) 全データの再作成 検索エンジン Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. Feeder Pulsar 17
レコメ用記事データ作成 • Feeder x Pulsar の運用 • 記事更新・削除メッセージ処理(通常運用) • 検索エンジンのリビルド(特殊運用) 全データの再作成 ④ 検索エンジンへ保存 検索エンジン Feeder ③ レコメ用データ作成 (表示用・特徴量) Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. ① 記事の更新通知(絶え間ない) Pulsar ② 更新通知取得 18
レコメ用記事データ作成 • Feeder x Pulsar の運用 • 記事更新・削除メッセージ処理(通常運用) • 検索エンジンのリビルド(特殊運用) 全データの再作成 検索エンジン Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. Feeder Pulsar 19
レコメ用記事データ作成 • Feeder x Pulsar の運用 • 記事更新・削除メッセージ処理(通常運用) • 検索エンジンのリビルド(特殊運用) 全データの再作成 ③ 該当記事データ削除 検索エンジン Feeder ① 記事の削除通知(絶え間ない) Pulsar ② 削除通知取得 Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 20
レコメ用記事データ作成 • Feeder x Pulsar の運用 • 記事更新・削除メッセージ処理(通常運用) • 検索エンジンのリビルド(特殊運用) 全データの再作成 検索エンジン Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. Feeder Pulsar 21
レコメ用記事データ作成 • Feeder x Pulsar の運用 • 記事更新・削除メッセージ処理(通常運用) • 検索エンジンのリビルド(特殊運用) 全データの再作成 ② 通常の更新・削除処理 検索エンジン Feeder ① カーソルリセット Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. Pulsar 22
レコメ用記事データ作成 • Feeder x Pulsar の運用 • 記事更新・削除メッセージ処理(通常運用) • 検索エンジンのリビルド(特殊運用) 全データの再作成 Point: カーソルリセット ・consume権限があれば実行可能 ・必要なsubscriptionに対して実行 ② 通常の更新・削除処理 検索エンジン Feeder ① カーソルリセット Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. Pulsar 23
レコメ用記事データ作成 • Pulsarの構成 • Topic Partitioned Topic • Subscription Type Failover • Geo-Replication 2DC 検索エンジン Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. Feeder Pulsar 24
Pulsarを使ってみての所感
順序保証 • 同一記事に対する更新・削除メッセージ処理の順序保証が必要 • Partitioned Topicの利用により可能 Feeder Feeder 検索エンジン 記事A 更新 記事B 更新 記事A 削除 Produceされたメッセージ Feeder 記事A 更新 Feeder Feeder 検索エンジン Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 記事A 更新 記事A 削除 古 記事B 更新 partition 記事B 更新 記事A 削除 新
カーソルリセット • 検索エンジンのリビルドのためカーソルリセットを利用 • consume権限があれば実行可能 • (仕様として)必要なsubscriptionのみにリセットがかかる • subscription作成前のメッセージを読めない → 2系で実装 Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 27
メトリクス集計 • Pulsarの各種メトリクスの集計・可視化をしたい… • デフォルトでメトリクスをPrometheusのフォーマットでexport • ↑を利用するとnamespace単位で集計されてしまう (がすでに解決済みの模様) Pulsar dashboardの利用,Kubernetesでデプロイをすればtopic単位 特に重要なメトリクス ・バックログ件数 ・時間あたりのメッセージ流入量 Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 28
ジオレプリケーション • 異なる拠点にメッセージをレプリケートして障害耐性UP • 一方のクラスタで障害が起きても別クラスタに切り替わり運用可能 • 異なるクラスタ間でカーソルの同期ができない クラスタの向きが変わった時に,consume済みのメッセージの再処理が必要 古 cursor 新 : メッセージ Cluster 1 クラスタが変わると重複で処理する分 Feeder Cluster 2 cursor Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 29
まとめ • レコメンドエンジンにおけるPulsarの利用 • レコメ用記事データ作成部分 • (ある記事に対する)レコメ記事作成部分 • Pulsarを利用してみての所感 • Pulsarの諸機能で要件の達成 • それぞれでメリット・デメリット確認 Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 30
自己紹介 • 森谷 大輔 • 同じくレコメエンジンチーム • Kafka jp運営 → 最近はPulsarを使う • 今熱いKPI → 体脂肪率 • 他の発表 • ストリーム処理プラットフォームにおけるKafka導入事例 (Apache Kafka Meetup Japan #1: 2016) • Hadoop Summit 2016 @San Jose ストリーム処理関連の報告 (Stream Processing Casual Talks #1: 2016) • Kafka 0.10.0アップデート プロダクション100ノードでやってみた (D&S Data Night vol.03: 2016) • 噛み砕いてKafka Streams (Apache Kafka Meetup Japan #2: 2016) • Elasticsearch 5.2とJava Clientで戯れる (第18回Elasticsearch勉強会: 2017) • Java Clientで入門するApache Kafka(JJUG CCC 2017 Spring: 2017) • Kafka Summit NYCに見るストリーミングデータETLの話(ストリームデータ処理技術勉強会: 2017) • 40分弱でわかるApache Kafka(JJUGナイトセミナー「メッセージングミドルウェア特集」: 2017) Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 31
PulsarとKafkaを使ってみて •管理者としてではなくプラットフォームの利用者とし て1年弱Pulsarに触れた • 「使い勝手の観点でKafkaと比較すると面白いのでは?」 • 使い始める前の僕 • 「あまりKafkaと変わらないのでは」 Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 32
PulsarとKafkaを使ってみて •→「やっぱりあまりKafkaと変わらない」 • Kafkaでやりたいことはほぼ同じコストでできている気がする •会社のData in Motionを扱う基盤としておよそ必要な機能が 揃う • 高スループット • 低レイテンシ • スケーラブル • データ損失しない (at-least-once) Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. • ジオレプリケーション • マルチテナンシー 認証・認可、クォータ 33
想定されるPulsarのユースケース •各coloの各種ログを集約・加工・配信する基盤、特に よくHadoopに送る ログ ログ ログ Asiaサービス バックエンド Asia Pulsar Cluster USサービス バックエンド ジオレプリケーション 異常検知PF ログ ログ ログ US Pulsar Cluster レコメンドエンジンPF 汎用的な加工 Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. https://commons.wikimedia.org/wiki/File:Hadoop_logo.svg 34
Kafkaと異なる点:トピック階層 •異なる点もある •トピック階層 • ネームスペースレベルでACL, クォータ等トピック設定ができる (トピックに継承) Kafkaはトピック毎に設定だった • 利用者にとってはグローバルなクラスタの中で独自クラスタを持て ている感覚になる 一歩ハイレイヤーに踏み込んでいる • Yahoo! Inc. 実績ではトピック数140万を運用 多サービスを持つ企業ならではの課題からきている気がする 何に使っているんだ・・・ Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 35
その他 Pulsar vs Kafka(主観) ポイント Pulsar Kafka 備考 実績・コミュニティの強さ これから つよい Kafkaは先行している分強い 旗振り Streamlio Confluent subscription作成以前のロ グを読める 読めなかっ た 読める 一番つらい 貯めている分のデータを新たに最初から再送したい要 件は頻繁にあるはず、なんとかならないか → 2系で実装 Log Compaction機能 なかった 非破壊的 ある 破壊的 2系で実装された 例えば僕たちのユースケースでは最新の2ヶ月分の記事 情報しか興味がない 1partitionを複数consumer Shared が読める 不可 あまり大きな利点でないと思う 選択的Ack 可 不可 これもユースケースが思いつかず微妙 メッセージTTL あり なし Ackの有無に関わらずTTLが過ぎたメッセージを読まな い、面白いかも スケール容易性 BookKeeper パーティ ション管理 Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. (管理者でないのでわからないが)Kafkaのパーティション管 理はきつい、PulsarはこのあたりBookKeeperが抽象化 36
まとめ •・Pulsarをしばらく使ってみたけどKafkaと使用感はあまり 変わらなかった(Client視点) •・しかしトピック階層の点やその他で異なる点もあった • ・subscription作成以前のログはなんとか読めてほしい •・Pulsarの今後に期待 Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 37