Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Hadoop Conference Japan 2013 Winter: "見える"Twitter全量リアルタイム解析 ~Hadoop/RabbitMQ処理の仕組みと可視化~

Kenji Hara
January 21, 2013

Hadoop Conference Japan 2013 Winter: "見える"Twitter全量リアルタイム解析 ~Hadoop/RabbitMQ処理の仕組みと可視化~

2013/1/21に東京ビッグサイトで開催された『Hadoop Conference Japan 2013 Winter』(日本Hadoopユーザー会主催)での講演資料です。
【講演概要】
NTTコミュニケーションズグループが提供する日本語ツイート全量リアルタイム分析サービス「BuzzFinder」では、データ処理基盤にHadoop/RabbitMQ/Cassandra/PostgreSQL等を利用して日々多くのデータを処理しています。
このような大規模データ処理システムの運用にはシステム動作状況の把握がとても重要で、BuzzFinderではデータ処理量の可視化を行うことでシステムの監視および性能改善に役立てています。
そこで、本セッションではBuzzFinderデータ処理基盤のデータ処理とその可視化についてご紹介します。

Kenji Hara

January 21, 2013
Tweet

More Decks by Kenji Hara

Other Decks in Technology

Transcript

  1. Copyright © 2012 NTT Communications Co., Ltd. All Rights Reserved.

    ”見える”Twitter全量リアルタイム解析 ~Hadoop/RabbitMQ処理の仕組みと可視化~ 原 謙治 NTTコミュニケーションズ株式会社 先端IPアーキテクチャセンタ 2013年1月21日
  2. 自己紹介 Copyright © 2011 NTT Communications Co., Ltd. All Rights

    Reserved. 1 @haracane 原 謙治 NTTコミュニケーションズの先端IPアーキテクチャセンタという R&D部門での大規模データ処理を主に担当。 2010年頃からTwitterを中心としたソーシャルメディアの日本語解析 にHadoopを利用。 クチコミ分析サービスBuzzFinderの開発ではTwitter解析エンジンの アーキテクチャ設計・実装・テストを担当。 好きなものは「面白いデータ」
  3. 本日のアジェンダ • BuzzFinderについて • Twitterデータの特徴 • BuzzFinderでのTwitterデータ日本語解析 • BuzzFinderでのTwitterデータ処理フロー –

    Hadoopを使ったバッチ処理 – RabbitMQ/Hadoopを組み合わせたリアルタイム処理 • Twitterデータ処理のグラフ可視化 • 解析例のご紹介 Copyright © 2011 NTT Communications Co., Ltd. All Rights Reserved. 2
  4. BuzzFinderとは Copyright © 2011 NTT Communications Co., Ltd. All Rights

    Reserved. 4 NTTコミュニケーションズグループが提供する 「国内最大級のクチコミ数を対象としたリアルタイム分析サービス」 http://www.nttcoms.com/service/buzzfinder.html BuzzFinderの特徴 Twitterの日本語ツイート全量と、 国内ブログサイトの90%以上を 対象に口コミを分析 クチコミデータを リアルタイムに分析 風評・炎上対策のために クチコミ数の動向から異変を検出 して担当者にメール通知 1 2 3
  5. ツイート量の傾向 Copyright © 2011 NTT Communications Co., Ltd. All Rights

    Reserved. 6 23時~1時頃がツイート量が多く、3時頃~6時頃が少ない 0時がピーク 深夜に減少 午後に増加 19時頃から上昇 8時頃まで上昇
  6. Twitterデータからわかる情報 Copyright © 2011 NTT Communications Co., Ltd. All Rights

    Reserved. 7 ツイート本文 ユーザ名 アカウント名 自己紹介文 場所 フォロワー数なども JSON ツイート本文だけでなくユーザの情報もツイート毎に取得できる
  7. Twitterデータの日本語解析 Copyright © 2011 NTT Communications Co., Ltd. All Rights

    Reserved. 9 ツイート本文 自己紹介文 場所 JSON リッチインデクシング技術*を利用して多面的に各ツイートを解析 キーワード キーワードの関連語 ユーザの属性 (年齢/性別/職業) ユーザの居住地 キーワードの評判 (ポジティブ/ネガティブ) JSON 日 本 語 解 析 済 デ ー タ * リッチインデクシング技術はNTT研究所が開発した日本語解析技術
  8. ツイート本文の日本語解析 Copyright © 2011 NTT Communications Co., Ltd. All Rights

    Reserved. 10 キーワード抽出 「地震」を解析対象 キーワードとして抽出 イタリアで地震予知 外すと禁錮6年かあ… イタリアで地震予知 外すと禁錮6年かあ… 関連語抽出 「禁錮6年」を「地震」の 関連語として抽出 コストコで地震は 怖すぎ… ポジネガ抽出 「怖い」を「地震」の ネガティブ語として抽出 ツイート本文からキーワード、関連語、ポジネガ語を抽出
  9. 自己紹介文・場所の日本語解析 Copyright © 2011 NTT Communications Co., Ltd. All Rights

    Reserved. 11 年齢抽出 「三十路」から「30代」を 年齢として抽出 性別抽出 「腐女子」から「女性」を 性別として抽出 職業抽出 「OL」から「会社員」を 職業として抽出 自己紹介文から年齢、性別、職業を抽出 場所からは都道府県を抽出 三十路の腐女子OL やってます 三十路の腐女子OL やってます 三十路の腐女子OL やってます 地域抽出 「歌舞伎町」から「東京」を 地域として抽出 歌舞伎町の近く
  10. Copyright © 2011 NTT Communications Co., Ltd. All Rights Reserved.

    BuzzFinderでのTwitterデータ処理フロー 13 結果 出力 Twitter解析 クラスタ Twitter RDB Webサーバ 日本語全量 (Firehose) KVS Hadoop/RabbitMQで 日本語解析&統計 Cassandraで Twitter&解析データ保持 PostgreSQLで インデックス作成 &集計結果保持 Railsで検索&集計 分散処理システムを組み合わせて 大規模ソーシャルデータのリアルタイム解析を実現
  11. Twitter解析クラスタの構成 Copyright © 2011 NTT Communications Co., Ltd. All Rights

    Reserved. 14 リアルタイム処理 クラスタ バッチ処理 クラスタ 速度優先のリアルタイム処理クラスタと データ網羅性優先のバッチ処理クラスタの二重構成でTwitterデータを解析 データ網羅性を重視 速報性を重視 リアルタイム データ蓄積 バッチ データ蓄積 KVS RDB
  12. Twitter解析バッチ処理クラスタ Copyright © 2011 NTT Communications Co., Ltd. All Rights

    Reserved. 15 リアルタイム処理 クラスタ バッチ処理 クラスタ リアルタイム データ蓄積 バッチ データ蓄積 KVS RDB データ網羅性を重視した MapReduce処理
  13. Twitter解析バッチ処理クラスタ Copyright © 2011 NTT Communications Co., Ltd. All Rights

    Reserved. 16 データ 蓄積 日本語全量 (Firehose) Map処理(HadoopStreaming) のみで日本語解析 MapReduceで 集計処理 日本語解析Map処理と集計MapReduce処理の2段構成で 全Twitterデータをバッチ処理 KVS RDB
  14. Twitter解析バッチ処理クラスタ Copyright © 2011 NTT Communications Co., Ltd. All Rights

    Reserved. 17 リアルタイム処理 クラスタ バッチ処理 クラスタ リアルタイム データ蓄積 バッチ データ蓄積 KVS RDB 速報性を重視した リアルタイム処理
  15. Twitterリアルタイム処理クラスタ Copyright © 2011 NTT Communications Co., Ltd. All Rights

    Reserved. 18 日本語解析Map処理を RabbitMQ経由で ストリーム実行 MapReduceで 最新データを集計 Map処理をRabbitMQ経由で実行することで 日本語解析をストリーム処理 データ 蓄積 日本語全量 (Firehose) KVS RDB
  16. Copyright © 2011 NTT Communications Co., Ltd. All Rights Reserved.

    バッチ処理のデータフロー 20 日本語解析Map 解析済 データ Keywords Locations Topics Index Data Keywords Locations Topics Index Data キーワード ポジネガ ユーザ属性 関連語 検索 インデックス データ抽出Map キーワード 集計 関連語 集計 ポジネガ 集計 ユーザ属性 集計 集計Reduce Index Data Index Data ツイート データ Locations Locations 居住地 居住地 集計 KVS RDB 一定時間毎に バッチ処理を実行 1日分の集計を実行
  17. Copyright © 2011 NTT Communications Co., Ltd. All Rights Reserved.

    リアルタイム処理のデータフロー 21 日本語解析Map 解析済 データ Keywords Semtiment Locations Topics Index Data Keywords Semtiment Locations Topics Index Data キーワード ポジネガ ユーザ属性 関連語 検索 インデックス データ抽出Map キーワード 集計 関連語 集計 ポジネガ 集計 ユーザ属性 集計 集計Reduce Index Data Index Data ツイート データ Locations Locations 居住地 居住地 集計 (Hadoop実行していた) Mapperプログラムを 分散ストリーム処理 クラスタで実行 KVS RDB 一定時間毎に 集計を実行
  18. Twitterデータ処理システムの運用 Copyright © 2011 NTT Communications Co., Ltd. All Rights

    Reserved. 23 結果 出力 Twitter解析 クラスタ Twitter RDB Webサーバ 日本語全量 (Firehose) KVS ブラウザから確認 リソース監視 ネットワーク監視 各種リソース監視 リソース状態からシステム状態を推測/切り分けするには 運用担当者にシステム内部に関する詳しい知識が必要 ログ確認
  19. BuzzFinderの運用改善 Copyright © 2011 NTT Communications Co., Ltd. All Rights

    Reserved. 24 「ログ表示ツールのWebアプリケーション化」と 「データ処理状況のグラフ可視化」によって運用負荷を低減 Twitter解析 クラスタ PostgreSQLとRailsを利用して バッチ/リアルタイム処理の実行ログを Webアプリケーションで表示 Muninを利用してデータ処理状況をグラフ可視化
  20. 処理実行ログをWebアプリケーションで表示 Copyright © 2011 NTT Communications Co., Ltd. All Rights

    Reserved. 25 Twitter解析 クラスタ ジョブ名, 開始時刻, 終了時刻 ジョブ名, 開始時刻, 終了時刻 ジョブ名, 開始時刻, 終了時刻, 実行結果 処理の起動時にログ書き込み、 終了時に終了時刻と実行結果を更新 Rails Scaffoldに簡易検索機能を 追加してログを表示 起動ログ 終了ログ ジョブ毎の ログを取得 シンプルな仕組みの組み合わせで実行ログ表示アプリケーションを作成
  21. 実行ログ表示Webアプリケーション Copyright © 2011 NTT Communications Co., Ltd. All Rights

    Reserved. 26 ジョブ名のプレフィックスで絞り込み 日付で絞り込み ジョブ名 処理時間 開始・終了時間 実行状態 100行以下の少ないコードで実行ログ表示 Webアプリケーションを作成
  22. データ処理状況をMuninでグラフ可視化 Copyright © 2011 NTT Communications Co., Ltd. All Rights

    Reserved. 27 Twitter解析 クラスタ データ種別毎に 処理量を出力 Muninで各データをグラフ化 HDFSデータ量 処理された各種データ量を定期的に観測してグラフ可視化を行う PostgreSQL データ量 Publish/ Subscribe量 Queueサイズ
  23. Muninとは Copyright © 2011 NTT Communications Co., Ltd. All Rights

    Reserved. 28 マシンのリソース使用状況を監視・グラフ化する リソースモニタリングツール Muninの特徴 CPU, メモリ, ディスク, ネットワーク等 の監視・グラフ化を行う。 大きな特徴はプラグイン作成による拡張 のしやすさ。 プラグインを作成して Twitterデータ処理状況をグラフ化
  24. Copyright © 2011 NTT Communications Co., Ltd. All Rights Reserved.

    バッチ処理データ量の可視化 29 日本語解析Map 解析済 データ Keywords Locations Topics Index Data Keywords Locations Topics Index Data キーワード ポジネガ ユーザ属性 関連語 検索 インデックス データ抽出Map キーワード 集計 関連語 集計 ポジネガ 集計 ユーザ属性 集計 集計Reduce Index Data Index Data ツイート データ Locations Locations 居住地 居住地 集計 KVS RDB 入力データ量 日本語解析 データ量 各種抽出 データ量 RDBロード量 KVSロード量
  25. バッチ処理データ量の可視化 Copyright © 2011 NTT Communications Co., Ltd. All Rights

    Reserved. 30 入力ツイート (バイト数) 日本語解析 (バイト数) キーワード&関連語 (バイト数) KVSデータ (カラム数) キーワード& 関連語 (レコード数) キーワード& 関連語集計 (バイト数) キーワード& 関連語集計 (レコード数) 各フェーズでの処理データ量をグラフ可視化 「いつ」「どこで」 「どのデータが」 処理されているかがわかる 障害対応・パフォーマンス チューニングを強力にサポート
  26. Copyright © 2011 NTT Communications Co., Ltd. All Rights Reserved.

    ストリーム処理データ量の可視化 31 日本語解析Map 解析済 データ Keywords Semtiment Locations Topics Index Data Keywords Semtiment Locations Topics Index Data キーワード ポジネガ ユーザ属性 関連語 検索 インデックス データ抽出Map キーワード 集計 関連語 集計 ポジネガ 集計 ユーザ属性 集計 集計Reduce Index Data Index Data ツイート データ Locations Locations 居住地 居住地 集計 KVS RDB 入力データ流量 /堆積量 日本語解析 データ流量 /堆積量 各種抽出 データ流量 /堆積量 KVSロード流量 /堆積量 RDBロード量
  27. 日本語解析 (ツイート数/秒) ストリーム処理データ量の可視化 Copyright © 2011 NTT Communications Co., Ltd.

    All Rights Reserved. 32 各フェーズでの処理速度、データ処理量、キューサイズをグラフ可視化 キーワード&関連語 (バイト数) キーワード& 関連語集計 (バイト数) 入力ツイート (ツイート数/秒) 日本語解析出力キュー (メッセージ数) データ処理量の確認に加えて データ処理速度の安定性も 確認できる
  28. (補足)データ処理可視化Muninプラグイン • https://github.com/haracane/cawcaw – Rubygemとして公開 – HDFS, PostgreSQL, RabbitMQ対応済み •

    ヘルプなし • 簡易ドキュメントのみ – MySQL対応とヘルプ追加・ドキュメント整備をしたらブログ・Twitterで 告知します Copyright © 2011 NTT Communications Co., Ltd. All Rights Reserved. 33
  29. Tweet数の推移 Copyright © 2011 NTT Communications Co., Ltd. All Rights

    Reserved. 35 10月以降の「地震」のTwitter上でのトレンド 10/19 10/26 11/2 11/9 11/16 11/23 11/30 首都圏の地震では大きくツイート数が伸びる M7.7@カナダ西海岸 M5.6@宮城県沖 M5.3@宮城県沖 M4.9@千葉県北西部 イタリア地震学者が 予知失敗で禁錮6年 ・中越地震発生日
  30. 関連語分析 Copyright © 2011 NTT Communications Co., Ltd. All Rights

    Reserved. 36 宮城沖地震 宮城県沖 怖い 多い 地震速報 宮城県 カナダ地震 カナダ 日本 日本時間 西海岸 マグニチュード7.7 イタリア裁判・ 中越地震発生日 禁錮6年 イタリア 地震予知失敗 新潟県中越地震 伊地裁 実際の地震では感情表現が増加する 首都圏・ 宮城沖地震 怖い 多い 震度4 地震速報 発生時刻 「地震」の関連語上位5件 「怖い」という 感情表現が1位 地震情報が中心 刑期のインパクト大 震源地に関心
  31. Copyright © 2011 NTT Communications Co., Ltd. All Rights Reserved.

    評判分析 「地震」に関する評判 首都圏地震の時が最もネガティブ 37 31.3% 68.7% 64.8% 35.2% 59.6% 40.4% 29.6% 70.4% イタリア裁判 宮城沖地震 カナダ地震 首都圏・ 宮城沖地震 ネガティブ ポジティブ
  32. Copyright © 2011 NTT Communications Co., Ltd. All Rights Reserved.

    地域分析 地震があると震源地のツイートが増加 38 宮城沖地震 東京 宮城 神奈川 埼玉 福島 カナダ地震 東京 神奈川 愛知 埼玉 千葉 イタリア裁判・ 中越地震発生日 東京 神奈川 新潟 千葉 埼玉 首都圏・ 宮城沖地震 東京 神奈川 埼玉 千葉 宮城 「地震」とつぶやいたユーザの場所上位5件 ほぼ人口順 全国に分布 新潟が上位に 震源地近辺が 上位に
  33. Copyright © 2011 NTT Communications Co., Ltd. All Rights Reserved.

    性別分析 「地震」についてつぶやいたユーザの男女比 実際の地震では女性率が上がる 39 男性 女性 54.7% 45.3% 64.4% 35.6% イタリア裁判 宮城沖地震 カナダ地震 首都圏・ 宮城沖地震 73.2% 26.7% 57.8% 42.2%
  34. Copyright © 2011 NTT Communications Co., Ltd. All Rights Reserved.

    年齢分析 「地震」についてつぶやいたユーザの年齢分布 実際の地震では若年層のつぶやきが多い (特に首都圏で起きた場合) 40 20代 10代 イタリア裁判 宮城沖地震 カナダ地震 首都圏・ 宮城沖地震 40代 30代 50代~ 50代以上が多い (9.9%) 10代が多い (38.6%) 10代が少ない (19.8%) 10代・20代が多い (31.2・31.6%)
  35. Copyright © 2011 NTT Communications Co., Ltd. All Rights Reserved.

    職業分析 「地震」についてつぶやいたユーザの職業分布 裁判の話題では公務員のつぶやきが多い 学生は若年層と同様の傾向 41 自営業 公務員 イタリア裁判 宮城沖地震 カナダ地震 首都圏・ 宮城沖地震 学生 専門職 その他 特徴なし 学生が多い (53.8%) 公務員が多い (9.2%) 学生が多い (48.0%) 会社員 アルバイト
  36. Copyright © 2011 NTT Communications Co., Ltd. All Rights Reserved.

    本日ご紹介した内容 • BuzzFinderのTwitter全量日本語解析の二つの仕組みの紹介 – バッチ処理 – リアルタイム処理 • Map処理のRabbitMQ移行によるストリーム処理化 • Muninによるデータ処理状況の可視化 • BuzzFinderでの「地震」解析例のご紹介 43
  37. Copyright © 2011 NTT Communications Co., Ltd. All Rights Reserved.

    Contacts • BuzzFinderについて – サービス紹介:http://www.nttcoms.com/service/buzzfinder.html • Hadoop等について – 原謙治 • [email protected] • Twitter @haracane • ブログ http://hatacomp.hateblo.jp/ 44
  38. Copyright © 2012 NTT Communications Co., Ltd. All Rights Reserved.

    Q&A Copyright © 2011 NTT Communications Co., Ltd. All Rights Reserved. 45