Apache...

Preview:

Citation preview

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

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

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

7.まとめ

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

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

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

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

↓ これが作りたい

2014 7 月 22 日 NHK NEWS WEB

2. 目的

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

3. Spark について

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

いて

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

4. Spark Streaming について

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

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

5. 検証サービス紹介

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

https://github.com/AKB428/mikasa_ol

https://github.com/AKB428/mikasa_rs

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

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

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

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

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

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

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

r/src/main/scala/mikasa.scala

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

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

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

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

2015年7月22日

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

• 最近のバルス

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

http://2045.tokyo/5/

http://2045.tokyo/60/

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

8/8 〜 12:00

8/8 12:24 〜

8/8 13:20

8/8 15:10

8/8 15:20

8/8 15:40

8/8 16:10

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

実際の売上

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

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

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

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

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

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

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

6. まとめ

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

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

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

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