48
Apache Spark ををををを をををををををををををををををを 「」 をををををををををををを GMO イイイイイイイ イイイイイイイイイイ イイイ

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

Embed Size (px)

Citation preview

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

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

GMO インターネット 次世代システム研究室野田純一

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

Overview1.自己紹介2.目的3.Spark について4.Spark Streaming について5.検証サービス説明6.Spark Streaming を使用したオンライン Twitter 解析によるレコメンドシステム 「 Mikasa 」 - 三笠

7.まとめ

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

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

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

• Spark について少し執筆しました

• 「 Software Design 2015 年 11 月号」• ConoHa を使った Hadoop クラスタの構成例と

SparkSQL をつかったデータ処理の実例が記載。

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

↓ これが作りたい

2014 7 月 22 日 NHK NEWS WEB

2. 目的

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

• Hadoop の MapReduce とは別アプローチ (DAG) での並列分散集計処理を行う• インメモリー処理• Hadoop エコシステムの一部として扱われるが Hadoop と直接的な関係はない• API を利用できる言語は Scala, Java, Python

3. Spark について

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

5. Spark について 〜 Spark 処理での DAGDAG

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

いて

• Spark サブシステムの一つでファイルからでなくリアルタイムに流れてくるストリームソースに対しての集計を対象としている。• 直近 1 時間のツイート数を毎分集計する、直近 3 時間でアクセスが多い IP を集計する・・などのウィンドウ集計が可能。

4. Spark Streaming について

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

Spark Streaming 〜データソースについて

その他、 ssc.socketTextStream(" localhost", 7777)とするとローカルポートをソースにできるのでサーバーのログを流し込んでリアルタイムにエラー、クラック IP の集計などが可能。

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

5. 検証サービス紹介

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

4. Spark Streaming を使用したオンラインTwitter 解析によるレコメンドシステム「 Mikasa 」 - 三笠

https://github.com/AKB428/mikasa_ol

https://github.com/AKB428/mikasa_rs

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

• Twitter ストリームからデータを取得する。• Twitter Streaming API を使う。• 400 の検索キーワードが指定可能。• Spark Streaming でリアルタイム集計を行う。

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

• 日本語文章を単語にわけて分解して集計• 日本語を分解するため形態素解析ライブラリ

kuromoji を使う。• アニメ作品など標準辞書にない単語はユーザー辞書 (CSV) を用意。

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

形態素解析ライブラリの必要性について

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

ユーザー辞書の必要性について

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

Spark Streaming によるウィンドウ集計の活用Mikasa は直近 5 分、直近 60 分のデータ集計を毎分行っている。(合計 60*2=120 回 )少ないソースコードで、ウィンドウ集計が可能。

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

• ソースコード• https://github.com/AKB428/mikasa_ol/blob/maste

r/src/main/scala/mikasa.scala

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

画面デモ(直近 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= ユーザー辞書外の単語も集計

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

画面デモ(直近 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= ユーザー辞書外の単語も集計

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

画面デモ 過去の履歴キャプチャ

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

2015 年 7 月 22 日7月 22 日ラブライブ 矢澤にこ 誕生日

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

2015年7月22日

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

• コミケ 2015 12/31 朝 8 時頃

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

• 最近のバルス

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

京都 OSC 用 つぶやきビックデータ 検索ハッシュタグ「 #osckansai 」

http://2045.tokyo/5/

http://2045.tokyo/60/

※URL の内容は 8/8 当日のみ京都 OSC 用になります

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

8/8 〜 12:00

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

8/8 12:24 〜

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

8/8 13:20

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

8/8 15:10

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

8/8 15:20

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

8/8 15:40

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

8/8 16:10

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

デモ:リコメンド Twitter ボットhttps://twitter.com/Akihabaara_itsohttps://twitter.com/AuctionMadoka

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

実際の売上

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

サーバーデモ動作中のサーバーのコンソールを公開

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

• Mikasa Twitter のデータ収集解析の2つのアプローチについて• ①Twitter Filter + ユーザー辞書のみの単語で絞る• 1のメリット▶集計しやすい、後続の処理も設計しやすい。• ▶1のデメリット 未知の単語を拾えない、ユーザー辞書にひもづく別のワードを拾えない• 結 結 結 結 結 結 結 結 結 結 結 結 結 結 結 結 結 結 結 結 結 結 結

結 結 結 結 結 結 結 結 結 結 結 結 結 結 結 結

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

• ② Twitter Filter + ユーザー辞書を使いつつ全ての単語を集計• メリット▶ 未知のワードが拾える、リアルなネットワーク解析ができる。• 結 結 結 結 結 結 結 結 結 結 結 結 結 結 結 結 結 結 結 結▶レンジングの作業にコストがかかる。• 結論:解析対象が不明なドメインの場合、まずこのアプローチで回す。計測対象のネットワークが変動しやすいドメインの場合はこのアプローチが有効。ある程度アプローチ2で回してアプローチ1に切り替える、もしくはアプローチ1を追加した二段のサービスに設計する。

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

Spark Streaming 〜ソースコード補足• TwitterUtil は実体は Java の Twitter ライブラリである twitter4j• Twitter 解析には TwitterAPI特有の API レートリミット、単一 IP による高負荷時のアクセス制限があるので注意• Twitter 開発者アカウントには電話番号が必須になったので気軽に開発はできなくなりつつある。

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

Mikasa インストールについてインストールマニュアルhttps://gist.github.com/AKB428/c30bc6a979e05fa3a022• TwitterAPI と AmazonAPI のアカウントがあれば 1時間でセットアップ完了。• AmazonAPI はリコメンドしない場合は不要。• TwitterAPI のアカウント取得も 10分程度で可能。Mikasa OLhttps://github.com/AKB428/mikasa_olMikasa RShttps://github.com/AKB428/mikasa_rs

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

• 作ったシステムはスタンドアロンでも安定して動く( 4 ヶ月放置しても安定動作 Spark1.4 、 Spark1.5)• 視覚的にわかりやすい、作りやすいので Spark入門用の教材に最適、会社ではインターン生に CDH 、 HDPクラスタを構築してもらい、クラスタ上で動作するよう作ってもらったりしている。(分散処理を体験したい学生向け)• イベントのハッシュタグを監視し、イベントの展示モニタなどに使うといい感じ。( OSC では実際使ってもらっている。

6. まとめ

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

コミュニティブースやっています!

IT系の同人誌を売っています。つぶやきビッグデータクローンのデモもあるので是非お立ち寄りください

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

ご清聴ありがとうございました

あんず&このはLINE スタンプ発売中