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.

Strem処理(Spark Streaming + Kinesis)とOffline処理(Hive)の統合

1,686 views

Published on

Strem処理(Spark Streaming + Kinesis)とOffline処理(Hive)の統合
Ryoichi Nishio @ SmartNews
JAWS−UG Meguro #2

Published in: Technology
  • Be the first to comment

Strem処理(Spark Streaming + Kinesis)とOffline処理(Hive)の統合

  1. 1. Stream処理(Spark Streaming+Kinesis) とOffline処理(Hive)の統合 西尾 亮一 (スマートニュース株式会社) JAWS-UG Meguro #2
  2. 2. 自己紹介 • 西尾 亮一 • スマートニュース株式会社 • ログ解析・機械学習 • 記事ランキングアルゴリ ズム
  3. 3. SmartNewsのご紹介 「記事の良質さ」とは何か、どのように計算できるか、 ということを議論しながら開発をしています
  4. 4. 今日の話 • 記事ランキングをSpark Streaming上で計算する話 • 記事分析基盤とログ解析基盤の整備が進んだ結果、 これらが持つすべての情報を集約して一箇所でラ ンキングを作ることができるようになりました。 これをSpark Streamingで行っています。 • ランキングアルゴリズムの中身は秘密なのでアー キテクチャーについて話します。
  5. 5. 記事ランキングの材料 • リアルタイムなデータ • アプリのログ (どの記事をいつ読んだか、...) • 記事情報 (カテゴリ分類、本文、固有表現、世の中 の注目度 ...) • オフラインバッチによるログ分析結果 • 機械学習のモデル、特徴ベクトル、分類結果、...
  6. 6. 記事分析基盤 本文抽出 カテゴリ分類 固有表現抽出 世の中の注目度 etc リアルタイムに更新される記事在庫 cloudsearch cloudsearchを使うことでより柔軟な記事検索ができるようになった 西岡「SmartNews の Webmining を支えるプラットフォーム」http://www.slideshare.net/smartnews/smart-news-webmining Webの海 crawler
  7. 7. ログ解析基盤 • ストレージ層とアプリケーション層を分離 • データとmetastoreは共通 • 用途に応じてPresto/Hive/Sparkを使い分け • 各クラスタはEMRで気軽に開始/終了 オフラインの機械学習もこの上でやる • HiveのUDFを書く • SparkのMLlibを使う 坂本「スマートニュースの世界進出を支えるログ解析基盤」 https://speakerdeck.com/takus/sumatoniyusufalseshi-jie-jin-chu-wozhi-erurogujie-xi-ji-pan-number-jawsdays-number-tech Hive Metastore in RDS (スキーマ情報) data in S3 Presto Hive Spark
  8. 8. ログ解析基盤 ログのストリーム 記事在庫 バッチ処理による機械学習 Spark SQL or read model ログ API server API server ランキングはDynamoDBに保存 (1分くらいごとに更新) Kinesis S3 記事ランキングのアーキテクチャ 同時に複数のSparkクラスタを立てて、 異なるランキングアルゴリズムを 試すこともできる EMR
  9. 9. Spark Streaming • ストリーム処理フレームワーク • DStream (Discrete Stream)と いうRDDのフロー • InputとしてKinesisに対応 • window処理も簡潔に記述 Sparkの公式ページから画像を拝借しました https://spark.apache.org/docs/latest/streaming-programming-guide.html#performance-tuning
  10. 10. ストリーム処理の例: 記事ごとのPVを集計する
  11. 11. オフライン処理の例: ユーザーのクラスタリング 1. Hiveのテーブルからユーザー特徴ベクトル取得 2. Spark MLlibのKMeansでクラスタリング 3. Hiveのテーブルとして結果を保存
  12. 12. ストリームとオフライン処理結果をjoinする 例 : (クラスタ,記事)のペアごとのPVを集計
  13. 13. Summary • Kinesis+Spark Streamingに、記事情報とバッチ分 析結果を組み込んで、SmartNewsの記事ランキング を作っています • この仕組みの上でより洗練されたランキングアルゴ リズムの開発とABテストをどんどん進めています
  14. 14. おまけ: 会社での他のストリーム処理の事例の紹介 Kinesis + PipelineDB + Chartio で 広告の速報値ダッシュボードを作る たむたむ 「PipelineDBをProductionに導入してみました。 How SmartNews Utilizes PipelineDB」 http://developer.smartnews.com/blog/2015/09/09/20150907pipelinedb/
  15. 15. おまけ2: エンジニア募集 • 良質な記事ランキングを一緒 に作りましょう! • スマホアプリ、Webアプリ、 ML、NLP、サーバサイド、 グロース、などいろいろ募集 しています • おいしくて無料の社食ありま す

×