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.

Apache Sparkを利用した「つぶやきビッグデータ」クローンとリコメンドシステムの構築

2,540 views

Published on

デブサミ2016 1日目のセッション内容です。
http://event.shoeisha.jp/devsumi/20160218/session/993/

Published in: Technology
  • Be the first to comment

Apache Sparkを利用した「つぶやきビッグデータ」クローンとリコメンドシステムの構築

  1. 1. Apache Sparkを利用した 「つぶやきビッグデータ」クローンと リコメンドシステムの構築 GMOインターネット 次世代システム研究室 野田純一
  2. 2. Overview 1.自己紹介 2.目的 3.Sparkについて 4.Spark Streamingについて 5.検証サービス説明 6.Spark Streamingを使用したオンラインTwitter解析によ るレコメンドシステム 「Mikasa」-三笠 7.まとめ
  3. 3. 1. 自己紹介 ■結構前 Java2EEによる業務オペレーションシステム ■ちょっと前 Perl/Rubyでソーシャルゲーム フレームワー ク開発 ■最近 Hadoopでアドテク Github: https://github.com/AKB428 Twitter: @n428dev Qiita: http://qiita.com/AKB428 Hatena: http://akb428.hatenablog.com/ 本部: http://akibalab.info/ Junichi Noda Larry Wall
  4. 4. • Sparkについて少し執筆しました • 「Software Design 2015年11月号」 • ConoHaを使ったHadoopクラスタの構成例と SparkSQLをつかったデータ処理の実例が記載。
  5. 5. 5 ↓これが作りたい 2014 7月22日 NHK NEWS WEB 2. 目的
  6. 6. • HadoopのMapReduceとは別アプローチ(DAG)での並列 分散集計処理を行う • インメモリー処理 • Hadoopエコシステムの一部として扱われるがHadoopと直 接的な関係はない • APIを利用できる言語はScala, Java, Python 3. Sparkについて
  7. 7. 5. Sparkについて 〜Spark処理でのDAG DAG
  8. 8. • http://itpro.nikkeibp.co.jp/atcl/column/14/1226001 37/122600004/?ST=bigdata&P=3
  9. 9. いて • Sparkサブシステムの一つでファイルからでなくリアルタイ ムに流れてくるストリームソースに対しての集計を対象とし ている。 • 直近1時間のツイート数を毎分集計する、直近3時間でアク セスが多いIPを集計する・・などのウィンドウ集計が可能。 4. Spark Streamingについて
  10. 10. Spark Streaming 〜データソースについて その他、ssc.socketTextStream(" localhost", 7777) とするとローカルポートをソースにできるのでサーバーのログを流 し込んでリアルタイムにエラー、クラックIPの集計などが可能。
  11. 11. 5. 検証サービス紹介
  12. 12. 4. Spark Streamingを使用したオンライン Twitter解析によるレコメンドシステム 「 Mikasa」-三笠 https://github.com/AKB428/mikasa_ol https://github.com/AKB428/mikasa_rs
  13. 13. • Twitterストリームからデータを取得する。 • Twitter Streaming APIを使う。 • 400の検索キーワードが指定可能。 • Spark Streamingでリアルタイム集計を行う。
  14. 14. • 日本語文章を単語にわけて分解して集計 • 日本語を分解するため形態素解析ライブラリ kuromojiを使う。 • アニメ作品など標準辞書にない単語はユーザー辞 書(CSV)を用意。
  15. 15. 形態素解析ライブラリの必要性について
  16. 16. ユーザー辞書の必要性について
  17. 17. Spark Streamingによるウィンドウ集計の活用 Mikasaは直近5分、直近60分のデータ集計を毎 分行っている。(合計60*2=120回) 少ないソースコードで、ウィンドウ集計が可能 。
  18. 18. • ソースコード • https://github.com/AKB428/mikasa_ol/blob/maste r/src/main/scala/mikasa.scala
  19. 19. 画面デモ(直近5分を毎分集計) (F1)2015年4期 TVアニメ http://tv-anime.xyz/5/ (F1)2016年1期 TVアニメ http://akiba-net.com/5/ (F2)ラブライブ http://lovelive-net.com/5/ (F2)デブサミ http://2045.tokyo/5/ (F2)関東TV番組 http://telev.net/5/ F1=ユーザー辞書に登録してある単語のみ集計 F2=ユーザー辞書外の単語も集計
  20. 20. 画面デモ(直近60分を毎分集計) (F1)2015年2期 TVアニメ http://tv-anime.xyz/60/ (F1)ラブライブ http://tv-anime.biz/60/ (F2)ラブライブ http://lovelive-net.com/60/ (F2)秋葉原 http://akiba-net.com/60/ (F2)関東TV番組 http://telev.net/60/ F1=ユーザー辞書に登録してある単語のみ集計 F2=ユーザー辞書外の単語も集計
  21. 21. 画面デモ 過去の履歴キャプチャ
  22. 22. 26
  23. 23. 2015年7月22日 7月22日 ラブライブ 矢澤にこ 誕生日 27
  24. 24. 28 2015年7月22日
  25. 25. • コミケ 2015 12/31 朝8時頃
  26. 26. • 最近のバルス
  27. 27. 31 京都OSC用 つぶやきビックデータ 検索ハッシュタグ 「#osckansai」 http://2045.tokyo/5/ http://2045.tokyo/60/ ※URLの内容は8/8当日のみ 京都OSC用になります
  28. 28. 8/8 〜12:00 32
  29. 29. 8/8 12:24〜 33
  30. 30. 8/8 13:20 34
  31. 31. 8/8 15:10 35
  32. 32. 8/8 15:20 36
  33. 33. 8/8 15:40 37
  34. 34. 8/8 16:10 38
  35. 35. デモ:リコメンドTwitterボット https://twitter.com/Akihabaara_itso https://twitter.com/AuctionMadoka
  36. 36. 実際の売上 40
  37. 37. サーバーデモ 動作中のサーバーのコンソールを公開
  38. 38. • Mikasa Twitter のデータ収集解析の2つのアプロ ーチについて • ①Twitter Filter + ユーザー辞書のみの単語で絞る • 1のメリット▶集計しやすい、後続の処理も設計しや すい。 • 1のデメリット▶未知の単語を拾えない、ユーザー辞 書にひもづく別のワードを拾えない • 結論:ある程度、解析対象のドメインが固定されて いるものにはこのアプローチは有効
  39. 39. • ② Twitter Filter + ユーザー辞書を使いつつ全ての単語を集計 • メリット▶ 未知のワードが拾える、リアルなネットワーク解 析ができる。 • デメリット▶ ジャンクワードが多く出現するのでデータクレ ンジングの作業にコストがかかる。 • 結論:解析対象が不明なドメインの場合、まずこのアプローチ で回す。計測対象のネットワークが変動しやすいドメインの場 合はこのアプローチが有効。ある程度アプローチ2で回してア プローチ1に切り替える、もしくはアプローチ1を追加した二 段のサービスに設計する。
  40. 40. Spark Streaming 〜ソースコード補足 • TwitterUtilは実体はJavaのTwitterライブラリで あるtwitter4j • Twitter解析にはTwitterAPI特有のAPIレートリ ミット、単一IPによる高負荷時のアクセス制 限があるので注意 • Twitter開発者アカウントには電話番号が必須 になったので気軽に開発はできなくなりつつ ある。
  41. 41. Mikasaインストールについて インストールマニュアル https://gist.github.com/AKB428/c30bc6a979e05fa3a022 • TwitterAPIとAmazonAPIのアカウントがあれば1時間でセッ トアップ完了。 • AmazonAPIはリコメンドしない場合は不要。 • TwitterAPIのアカウント取得も10分程度で可能。 Mikasa OL https://github.com/AKB428/mikasa_ol Mikasa RS https://github.com/AKB428/mikasa_rs
  42. 42. • 作ったシステムはスタンドアロンでも安定して動く( 4ヶ月放置しても安定動作 Spark1.4、Spark1.5) • 視覚的にわかりやすい、作りやすいのでSpark入門用 の教材に最適、会社ではインターン生にCDH、HDPク ラスタを構築してもらい、クラスタ上で動作するよう 作ってもらったりしている。(分散処理を体験したい 学生向け) • イベントのハッシュタグを監視し、イベントの展示モ ニタなどに使うといい感じ。(OSCでは実際使っても らっている。 6.まとめ
  43. 43. コミュニティブースやっています! IT系の同人誌を売っています。 つぶやきビッグデータクローンのデモもあるので 是非お立ち寄りください
  44. 44. ご清聴ありがとうございました あんず&このは LINEスタンプ発売中

×