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.

Spark Streamingを使ってみた ~Twitterリアルタイムトレンドランキング~

3,856 views

Published on

Spark Streamingを使用して、ウィンドウ集計をやってみました。

Published in: Technology

Spark Streamingを使ってみた ~Twitterリアルタイムトレンドランキング~

  1. 1. Spark Streaming を使ってみた Ver 1.0 twitterリアルタイムトレンドランキング 2016年5月30日 Copyright © Skywill inc. All Rights Reserved.
  2. 2. Copyright © Skywill inc. All Rights Reserved. メンバー紹介 2 杉山項紀 金ヨル ・職業 SE ・役職 リーダ ・java歴10年 ・mac歴1年 ・バナナきらい ・職業 SE ・役職 メンバー ・java歴5年 ・日本歴4年 ・金曜日の夜は僕の日
  3. 3. Copyright © Skywill inc. All Rights Reserved. 目的 3 Spark Streamingを使用して、 ウィンドウ集計をやってみる。
  4. 4. Copyright © Skywill inc. All Rights Reserved. アジェンダ 4 1. Sparkって何? 2. Spark Streamingとは? 3. 実践 4. 実践のまとめ
  5. 5. Copyright © Skywill inc. All Rights Reserved. アジェンダ 5 1. Sparkって何? 2. Spark Streamingとは? 3. 実践 4. 実践のまとめ
  6. 6. Copyright © Skywill inc. All Rights Reserved. 6 Sparkって何? ・大規模データの分散処理をオンメモリで実現する クラスターコンピューティングプラットフォーム。 ・「今後はHadoopのMapReduceよりも Sparkが使われるようになる」と言われている。 Apache Spark 概要 出典:Apache Spark (https://ja.wikipedia.org/wiki/Apache_Spark) Apache Spark™ is a fast and general engine for large-scale data processing. 出典:Apache Spark (http://spark.apache.org)
  7. 7. 7 Sparkって何? 標準ライブラリ ・SQLクエリ処理 「Spark SQL」 ・ストリーム処理 「Spark Streaming」 ・機械学習処理 「MLib」 ・グラフ処理 「Graph X」 SparkとHadoopのロジスティック回帰処理速度比較 計算結果をメモリにキャッシュする。 そのため、従来のMapReduceと比べて 繰り返し計算が高速! 処理速度 Copyright © Skywill inc. All Rights Reserved. 出典:The Apache Software Foundation (http://spark.apache.org )
  8. 8. 8 Sparkって何? 言語サポート ・Java ・Scala ・Python ・R インストール ・ダウンロード元: https://spark.apache.org/downloads.html ・macにApache Sparkをインストール – Qiita http://qiita.com/kanuma1984/items/51c283ba2dd0f02c6aaa などを参考にインストール! Copyright © Skywill inc. All Rights Reserved.
  9. 9. 9 の特徴 1.RDD (Resilient Distributed Dataset) 繰り返し利用するデータをキャッシュ上に保持しするため、 処理が非常に早い。 2.On-memoryの高速処理 メモリ上でRDDの再利用ができる。 3.DSL Mapper・Reducerの変わりにScalaのDSLを記述できるため、 より汎用的な言語で利用できる。 4.維持保守が容易 ソースコードを簡潔に書ける。 Sparkって何? Copyright © Skywill inc. All Rights Reserved.
  10. 10. 10 Sparkって何? データ 取り出し RDD データ整形 データ整形 データ整形 データ整形 データ整形 RDD 書込 書込 書込 Map処理 出力処理 <?xml version=“1.0”> <title>XXX APIYYY取得結果</title> <location>35.5,139.0</location> ... </xml> { “text”:”XXX APIYYY取得結果”, “longtitude”:”35.5, “latitude”:”139.0”, ... } { “title”:”XXX APIYYY取得結果”, “location”:”35.5, 139.0” ... } JSON変換入力データ データ整形後 Copyright © Skywill inc. All Rights Reserved.
  11. 11. Copyright © Skywill inc. All Rights Reserved. 11 の特徴 Sparkって何? 1.分散処理フレームワーク Mapper・Reducerのスクリプトで分散処理が実装可能。 2.拡張性 安価なサーバをノードとして増やすことで簡単にスケールできる。 3.耐障害性 処理中に一部のノードが故障してもすぐに別ノードへ処理を 振り分けられる。 おまけ
  12. 12. 12 SparkとHadoopの違い Sparkって何? ○ バッチ処理(1つの大きなサイズファイル処理) × リアルタイム処理(複数の小さなサイズのファイルを処理) ・データの持ち方 ファイル(サイズの小さいファイル) 大量データを処理が可能。 読み書きのオーバヘッドがあり、リアルタイム処理には向かない。 ○ リアルタイム処理(複数の小さなサイズのファイルを処理) × バッチ処理(1つの大きなサイズのファイルを処理) ・データの持ち方 メモリ メモリにデータを持つため、データアクセスが早い。 逆に大量データは扱いにくい。 Copyright © Skywill inc. All Rights Reserved.
  13. 13. 13 Sparkって何? ワードカウント を行う サンプルソース MapReduce Spark 出典:Clouderaエンジニアブログ(http://blog.cloudera.com/) Map処理 Reduce処理 Map処理 Reduce処理6行! 36行! Copyright © Skywill inc. All Rights Reserved.
  14. 14. 14 Sparkって何? リアルタイム集計 オンメモリ 高速 分散処理 Hadoopと連携 Dstream RDD 機械学習 データサイエンス 統計分析 Scala R Python Java GraphX Spark SQL ストリーミング処理 Sparkとは メモリ上でリアルタイムレベルの高速処理ができる 汎用的分散処理プラットフォーム Copyright © Skywill inc. All Rights Reserved.
  15. 15. Copyright © Skywill inc. All Rights Reserved. アジェンダ 15 1. Sparkって何? 2. Spark Streamingとは? 3. 実践 4. 実践のまとめ
  16. 16. Copyright © Skywill inc. All Rights Reserved. Spark Streamingとは? 16 ・Sparkの標準ライブラリの一つ ・リアルタイムに流れている ストリームソースを短い間隔で繰り返し、 バッチ処理する。 ・読み:スパーク ストリーミング 出典:The Apache Software Foundation (http://spark.apache.org )
  17. 17. Copyright © Skywill inc. All Rights Reserved. Spark Streamingとは? 17 ・Spark Streaming用のRDDを 連続して並べたもの データのやり取りはDstreamの 受け渡しで行う 用語 ・reduceByKeyAndWindowを利用し、 直近一定時間の集計を可能にする (毎秒、毎分ごとに、直近1時間の集計を するなど) ・データ要素を別の型のRDDに 変換する ・直近のデータを取得・集計する ・キー/値のペアのRDDに変換する DStream ウィンドウ集計 関数:flatMap 関数:mapToPair 関数:reduceByKeyAndWindow
  18. 18. Copyright © Skywill inc. All Rights Reserved. アジェンダ 18 1. Sparkって何? 2. Spark Streamingとは? 3. 実践 4. 実践のまとめ
  19. 19. Copyright © Skywill inc. All Rights Reserved. 実践 19 こんなんつくってみる。 Twitterのハッシュタグから Spark Streamingを使用した リアルタイムトレンドランキングチャート Twitter API Spark Streaming Web画面 直近60秒毎のトレンド表示
  20. 20. Copyright © Skywill inc. All Rights Reserved. システム構成 20 データの流れ Twitter API Spark Streaming MySQL ①Twitterストリームからのメタデータ取得 ②データを解析し集計 ・ハッシュタグ ・解析済みワード ・カウント ① ②
  21. 21. システム構成(ハッシュタグ+ワードカウント) ⑤リクエスト ⑦レスポンス ④データ格納 テキストマイニング ②データ解析 次の2種類をkeyにreduce ・ハッシュタグ+解析済みワード ・ハッシュタグのみ ③データ集計 クライアント Twitter Twitterリアルタイム トレンドランキングチャート アプリ ①メタデータ取得 Copyright © Skywill inc. All Rights Reserved. 21 Map Reduce ツイートデータ ⑥データ取得 格納データ ・ハッシュタグ ・解析済みワード ・カウント
  22. 22. Copyright © Skywill inc. All Rights Reserved. 実践 22 Twitterデータ取得部分 その1 Twitter4jを使用して、 twitterからstreamデータを DStreamへ 1ツイートごとに twitter本文を解析する 名詞に分ける 日本語形態素解析 ライブラリ 使用関数:map ①メタデータ取得 ②データ解析 ②データ解析 ※○内の番号はP20参照
  23. 23. Copyright © Skywill inc. All Rights Reserved. 実践 23 Twitterデータ取得部分 その2 名詞に分ける 名詞ごとにmapにして DStreamへデータを詰める 上記のDStreamから キーが同じものをペアにし DStreamへデータを詰める 使用関数:flatMap 使用関数:mapToPair ③データ集計 ③データ集計
  24. 24. Copyright © Skywill inc. All Rights Reserved. 実践 24 Twitterデータ取得部分 その3 DStreamから キーが同じものをペアにし DStreamへデータを詰める 直近10秒毎に、1分集計で キーをカウントする。 Mysqlに結果をdelete insert これらの処理を ・ハッシュタグ ・ワード ・ハッシュタグワード それぞれ行う。 使用関数: reduceByKeyAndWindow 使用関数:mapToPair ④データ格納 ③データ集計
  25. 25. Copyright © Skywill inc. All Rights Reserved. 実践 25 画面表示部分 SQLでデータ取得 ・ハッシュタグ・ワード ・ハッシュタグワード ごとに画面表示 ⑦レスポンス ⑤リクエスト ⑥データ取得 60秒毎にデータ取得リクエスト
  26. 26. Copyright © Skywill inc. All Rights Reserved. 実践 26 結果
  27. 27. Copyright © Skywill inc. All Rights Reserved. アジェンダ 27 1. Sparkって何? 2. Spark streamingとは? 3. 実践 4. 実践のまとめ
  28. 28. Copyright © Skywill inc. All Rights Reserved. 実践のまとめ 28 今回、実践としてSpark Streamingを利用して、 Twitterのハッシュタグ、ワードを 直近10秒ごと1分でウィンドウ集計をすることができた。 Spark Streamingを利用して、 ウィンドウ集計をおこなうことができる。
  29. 29. Copyright © Skywill inc. All Rights Reserved. ふろく(エンジニア注目度からみたSpark) 29 急上昇中 http://redmonk.com/dberkholz/2015/03/13/the-emergence-of-spark/
  30. 30. Copyright © Skywill inc. All Rights Reserved. ふろく(Hacker情報からみたSpark) 30 急上昇中 http://redmonk.com/dberkholz/2015/03/13/the-emergence-of-spark/
  31. 31. Copyright © Skywill inc. All Rights Reserved. ふろく(GoogleトレンドからみたSpark) 31 急上昇中 http://redmonk.com/dberkholz/2015/03/13/the-emergence-of-spark/
  32. 32. Copyright © Skywill inc. All Rights Reserved. ふろく(Hadoop vs Spark:Googleトレンド) 32 win
  33. 33. Copyright © Skywill inc. All Rights Reserved. ふろく(In Gartner Magic Quadrant for Operational DBMS) 33 Sparkの推移
  34. 34. Copyright © Skywill inc. All Rights Reserved. ふろく(In Gartner Magic Quadrant for Operational DBMS) 34 Sparkベース
  35. 35. Copyright © Skywill inc. All Rights Reserved. ふろく(In Gartner Magic Quadrant for Operational DBMS) 35 Sparkベース
  36. 36. Copyright © Skywill inc. All Rights Reserved. ふろく(In Gartner Magic Quadrant for Operational DBMS) 36

×