NTTコミュニケーションズは、Hadoopを利用してマーケッティング向けログ解析システムを開発しました。本解析システムはアクセスログ、クエリログ、クリックログ、CGMデータを解析して特定の商品・サービスに対するインターネットユーザの興味やフィードバックを抽出でき、(1)評判分析、(2)関連語分析、(3)ユーザ興味推定、の3種の解析を行うことができます。本発表では、上記ログ解析システムの機能の他に、Map処理の強化によるシャッフルサイズの削減方法、我々のHadoopクラスタの特徴についても紹介します。
NTT communication developed the Hadoop-based log analysis system for the marketing purpose. This system extract the interest or feedbacks of the specific goods/products, by analyzing the access logs, query logs, click logs and CGM data. The three types of the analysis are supported: 1) reputation analysis, 2) related-word analysis 3) user interest estimation. This session also describes how to reduce the shuffle size, and the specifications of our Hadoop clusters.
2. Who am I? 先端 IP アーキテクチャセンタは 技術 / サービス開発を担当 技術開発 クラウドサービス 開発の事例を紹介 NTT コミュニケーションズ 先端 IP アーキテクチャセンタ Net Marketing Analysis & DB Technology 担当 原 謙治 運用・保守 設計・構築 営業 事業企画・推進 スタッフ サービス開発 CUSTOMER RETENTION [ 顧客との 信頼関係の維持 ] DELIVERY [ 宣伝 / 営業 / デリバリ ] SUPPORT [ 現場をサポート ] CREATION [ 技術 / サービス開発 ]
3. BizCITY: Cloud Service provided by NTT Communications データセンタ間高速バックボーン Global NW セキュアコネクティビティ Internet / IP 電話網 VPN サービス ICT アウトソーシング Fire Wall ギャランティ バースト ベストエフォート 国内拠点 海外拠点 Biz ホスティング 仮想サーバ ホスティングサービス Biz メール 大容量 Web メール スケジューラ等 SaaS アプリケーション CRM / SFA 等 Internet Biz ストレージ 大容量 ファイルサーバ マルチレイヤマーケティング ソリューション Biz マーケティング ネット マーケティング 高速モバイル アクセス モバイルシンクライアント セキュアリモートアクセス ユビキタスオフィス PC リモートアクセス 携帯リモートアクセス ユビキタス IP 電話 大規模データストア 大規模データ解析 Biz ストレージ 大容量 ファイルサーバ マルチレイヤマーケティング ソリューション Biz マーケティング ネット マーケティング
4. Big Datas in BizCITY Biz ストレージに保存した データの分散処理 各種ログデータ、 CGM データの 大規模分散処理 高セキュリティ・大容量の ストレージを提供することで 運用コストを削減 ユーザ行動ログからマーケティング 情報を抽出して企業活動を支援 解析用大規模データ ストア用大規模データ Biz ストレージ 大容量 ファイルサーバ マルチレイヤマーケティング ソリューション Biz マーケティング ネット マーケティング Hadoop クラスタを利用して 各種大規模データの分散処理を実現 大規模分散処理 対象領域 データの用途 サービスの特長 連携も視野
5. Hadoop in Biz Marketing “ Web access Analysis ” visualizes internet-users ’ behaviors. “ Buzz Finder ” supports marketing activity using customers ’ feedbacks in social media. 大規模 Web アクセスログを解析してユーザ行動情報を抽出 大規模 CGM データを解析してクチコミ情報を抽出 データクロール 検索語収集 データクロール 企業メッセージが正しく ユーザに伝わっているか? 広告宣伝の効果はどうか? ネット上で自社の悪評が流れていないか? 自社商品の改善ポイント、 差別化ポイントは何か? マーケティング担当様 広告宣伝担当様 広報・総務担当様 商品開発担当様 自社ブランドの 評判を分析 広告・宣伝後の 評判を分析 自社名当の 評判を分析 自社 / 他社商品の 評判を比較 書き込み 検索利用 PaaS 型サービスへ向けた 運用コスト削減のための高速化 Blog データ規模増大への対応 Hadoop を利用 Hadoop を利用
6. Hadoop in BuzzFinder 1 レコードあたりのデータが大きい CGM DB (Twitter, Blog など ) PostgreSQL レコード数が少ない ( 数百万 / 日 ) Map 処理が中心←大部分が日本語解析 Import CGM データ HDFS ワード抽出 関連語抽出 ポジネガ語抽出 位置情報抽出 検索 Index 作成 Map 抽出 Word 関連語 ポジネガ語 位置情報 検索 Index HDFS キーワード辞書 PostgreSQL export 集計 DB PostgreSQL 処理の特徴 export 抽出 DB PostgreSQL 抽出ワード集計 関連語集計 HDFS ポジネガ分布集計 位置分布集計 集計 Reduce 日本語 解析 Map CGM 解析 データ HDFS リッチインデクシング技術 * を利用して日本語解析 * リッチインデクシング技術 : NTT 研究所が開発した日本語解析技術 資料末尾に参考 URL
15. Map Multi-Reduce/Local Reduce User Program worker worker worker Input Data fork fork fork Master worker worker assign map assign reduce local write remote read, sort Output File 0 Output File 1 Split 1 Split 0 Split 2 Split 3 Split 4 read worker worker worker worker worker assign local reduce マシン プロセス ファイル 同一ノードの Map 出力結果を Reduce して Shuffle 対象データを削減 Local Reduce タスク Local Reduce タスク Local Reduce タスク Web アクセスログ解析のクリックログ集計処理で Record Reduce と Local Reduce により 2.2 倍の速度向上を確認
16. PJoin/Join with Semi-Join View Query execution siteinfo a siteinfo _ accesses 1 accesses processing + 準結合 mapper … siteinfo _ accesses n accesses n … accesses 1 accesses processing + 準結合 Joining with siteinfo reducer … Joining with siteinfo siteinfo z Pre-computation siteinfo accesses hash(x) hash(y) … siteinfo b siteinfo a siteinfo z accesses 1 accesses n siteinfo _ accesses n siteinfo _ accesses 1 … hash(y) siteinfo primary key & foreign key (accesses primary key) アクセスログ サイト毎の 詳細情報 テーブルの事前シャッフル実行,準結合中間データの事前生成 mapper で準結合処理後に, reducer で残処理を実行 DFS read shuffle
17. Results of PJoin 1TB のアクセスログ処理で Pjoin の速度性能を検証 Hive で処理した 50 台と本技術を適用した 20 台が 同等の性能であることを確認 実行した HiveQL insert overwrite table q1_result select count(distinct s_sessionseqid) from clckstrm c join page p on c.c_pageseqid = p.p_pageseqid and p.p_url like '%blog.goo.ne.jp%' join session_info s on s.s_clckstrmseqid = c.c_clckstrmseqid and s.s_referer like ‘%*%';