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.

アクセス解析システムの裏側 (公開用)

33,936 views

Published on

  • @HideyukiKawashima
    川島先生、コメントありがとうございます。
    やはりSQLではなかなか痒い所には手が届かないですよね。なので、Hive等にデータを入れる時点でできるだけ扱いやすい形式に変換、非正規化してしまって、Hiveでは単純な集計処理をするだけ状態にしてしまえば、目的の処理は妥当なコストで実現できるかとは思います。もちろん、より汎用的な手法は模索していきたい所です。 MADLib/Bismarck も調べてみたいと思います。
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • おお、UserLocalに行ったんだ!!
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • とても興味深いです.JOIN処理が重い点,SQLに限界がある点について,特に共感いたしました.UDF/UDAに関しては処理内容を並列化することが困難ですが,MADLib/Bismarckは機械学習の一部(特に凸最適化問題(SVMなど))に関しての性能向上を提案しており,SQL/MapReduceではUDFでのM/R記述を許しています.しかしながらどれもいまいち痒いところに手が届かないように思います.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

アクセス解析システムの裏側 (公開用)

  1. 1. アクセス解析システムの裏側 三上俊輔 112年9月23日日曜日
  2. 2. 目次 1. 自己紹介 2. ユーザーローカルとアクセス解析 3. アクセス解析の基礎 4. アクセス解析システムの裏側 - リアルタイム集計 - 小バッチ集計 - 大規模バッチ集計 スライド49枚 212年9月23日日曜日
  3. 3. 自己紹介 • 三上俊輔 • 株式会社ユーザーローカル • 今年3月に筑波大学院を卒業 • 大学では分散ファイルシステムの研究 • 学生の時はCookpadのデータマイニン グ部門で2ヶ月ほどインターン 312年9月23日日曜日
  4. 4. 過去の研究、発表 • 研究ブログ:http://shun0102.net/ • 発表:「分散ファイルシステムGfarm 上でのHadoop MapReduce」など - http://www.slideshare.net/shun0102/ 412年9月23日日曜日
  5. 5. 株式会社ユーザーローカル •早稲田発技術ベンチャー •無料アクセス解析ツール運営 •商用アクセス解析ツールの開発/販売 •データ調査(総務省などの仕事) ex. 日本のブログ実態調査など 512年9月23日日曜日
  6. 6. •PCサイト解析事業 •「ユーザーインサイト」 •「なかのひと」 •モバイル解析事業 •ケータイ解析 •ソーシャル解析事業 •ソーシャルメディア解析 612年9月23日日曜日
  7. 7. アクセス解析は ビッグデータ! 月間50億PV を、解析してます 712年9月23日日曜日
  8. 8. 商用ツール ユーザーインサイト •有料のアクセス解析ツール •ヒートマップ機能と属性解析機能 812年9月23日日曜日
  9. 9. よく聞かれる疑問 【アクセス解析】を 提供している会社は いっぱいあるんじゃないの??? 912年9月23日日曜日
  10. 10. 国内でも50社以上 1012年9月23日日曜日
  11. 11. 1112年9月23日日曜日
  12. 12. 海外有名企業が提供。 1112年9月23日日曜日
  13. 13. にもかかわらず、 国内大手企業が次々導入。 1212年9月23日日曜日
  14. 14. User Insightでは、どこを どう見られているかがわかる 1312年9月23日日曜日
  15. 15. 訪問者がページの中を どう見たのかを、可視化 ✓クリックが多い場所はどこ? ✓どこまで読まれている? ✓熟読されている段落は? 1412年9月23日日曜日
  16. 16. 訪問者がページの中を どう見たのかを、可視化 ✓クリックが多い場所はどこ? ✓どこまで読まれている? ✓熟読されている段落は? 1412年9月23日日曜日
  17. 17. 訪問者がページの中を どう見たのかを、可視化 ✓クリックが多い場所はどこ? ✓どこまで読まれている? ✓熟読されている段落は? 1412年9月23日日曜日
  18. 18. 訪問者がページの中を どう見たのかを、可視化 ✓クリックが多い場所はどこ? ✓どこまで読まれている? ✓熟読されている段落は? 1412年9月23日日曜日
  19. 19. 訪問者がページの中を どう見たのかを、可視化 ✓クリックが多い場所はどこ? ✓どこまで読まれている? ✓熟読されている段落は? 1412年9月23日日曜日
  20. 20. 訪問者がページの中を どう見たのかを、可視化 ✓クリックが多い場所はどこ? ✓どこまで読まれている? ✓熟読されている段落は? ブラウザの挙動から ユーザーの動きを ヒートマップ表示 1412年9月23日日曜日
  21. 21. 今日のメインはこの有料アクセス解析 ではなくて、 無料のアクセス解析ツールに関して 1512年9月23日日曜日
  22. 22. うごくひと2 •10万サイト以上が利用 •月間30億PV •主にガラケー向け 1612年9月23日日曜日
  23. 23. なぜリニューアル? • スマートフォン • リアルタイム • ビッグデータ 今の40億PVから100億PVへスケール 1712年9月23日日曜日
  24. 24. 新卒で入ってからのミッション • 100億PVまでスケールするアクセス解 析システムのバックエンド • アクセスをうけるビーコンと集計する バッチをどう構築するか 1812年9月23日日曜日
  25. 25. まずはアクセス解析の基本から 1912年9月23日日曜日
  26. 26. ビーコン型アクセス解析 一般ユーザー ウェブサイト サイト閲覧 アクセス解析事業者 情報送信 (Javascriptで情報を送る、 携帯などは画像を読み込ませる) 2012年9月23日日曜日
  27. 27. 基本的な指標 • PV ・・・ アクセス回数 • VISIT・・・ セッション回数 • UU・・・ ユニークユーザー数 2112年9月23日日曜日
  28. 28. セッションって何? • 一定時間(30分が多い)途切れずに続く一連のアクセス 2セッション 0:00 0:50 1:10 1セッション 0:00 0:20 0:40 1:00 2212年9月23日日曜日
  29. 29. アクセス解析システム実装の悩み • 大量のアクセスを受け付けてリアルタイム集計もするフロ ントエンド • リアルタイムでやるには重い処理(JOINなど) • 離脱の判定などのセッション単位の集計 • 人気ページランキングなどの1日単位の大規模集計 • 全て1日一回のバッチで済ませれば構成はシンプルにな るが、バッチが数時間かかるのはつらい 2312年9月23日日曜日
  30. 30. 集計処理の分類 • リアルタイム集計 • 小バッチ集計(30分に一回) • 大バッチ集計(一日一回) 2412年9月23日日曜日
  31. 31. リアルタイムサマリー 2512年9月23日日曜日
  32. 32. リアルタイム足跡 2612年9月23日日曜日
  33. 33. これらの機能を実現するために、、、 • カウントアップするためのストレージ • 秒間1000~2000アクセス • 1回のアクセスで数回のreadとwrite • 直近のアクセスを見るためのストレージ • readよりwriteが多い • 集計処理 2712年9月23日日曜日
  34. 34. これらの機能を実現するために、、、 • カウントアップするためのストレージ • 秒間1000~2000アクセス 速さと安定性 • 1回のアクセスで数回のreadとwrite • 直近のアクセスを見るためのストレージ • readよりwriteが多い • 集計処理 2712年9月23日日曜日
  35. 35. これらの機能を実現するために、、、 • カウントアップするためのストレージ • 秒間1000~2000アクセス 速さと安定性 • 1回のアクセスで数回のreadとwrite • 直近のアクセスを見るためのストレージ 高い書き込み性能と • readよりwriteが多い 柔軟な集計処理 • 集計処理 2712年9月23日日曜日
  36. 36. フロントのシステム構成 PV, VISIT, UUのカウントアップ Memcached ログ書き込み 2812年9月23日日曜日
  37. 37. Fluentdでのログリレー UUなどカウントアップ Fluentd Fluentd Memcached ログ書き込み Fluentd Fluentd (slave) (master) 参考:http://docs.treasure-data.com/articles/td-agent-high-availability 2912年9月23日日曜日
  38. 38. Fluentdでのログリレー UUなどカウントアップ Fluentd Fluentd Memcached ポイント1. 次のfluendに書き込めない時は待ってリトライする ログ書き込み Fluentd Fluentd (slave) (master) 参考:http://docs.treasure-data.com/articles/td-agent-high-availability 2912年9月23日日曜日
  39. 39. Fluentdでのログリレー UUなどカウントアップ Fluentd Fluentd Memcached ポイント1. 次のfluendに書き込めない時は待ってリトライする ログ書き込み Fluentd Fluentd (slave) (master) ポイント2. MongoDBへの書き込みはチャンク単位で行う 参考:http://docs.treasure-data.com/articles/td-agent-high-availability 2912年9月23日日曜日
  40. 40. 集計処理の分類 • リアルタイム集計 • 小バッチ集計(30分に一回) • 大バッチ集計(一日一回) 3012年9月23日日曜日
  41. 41. 通常の集計処理の結果画面 3112年9月23日日曜日
  42. 42. 組織からの訪問回数 3212年9月23日日曜日
  43. 43. 小バッチ処理でやらないといけないこと • 離脱の判断 • 組織やユーザエージェントの情報などとの JOIN • 集計結果をDBに保存 3312年9月23日日曜日
  44. 44. 小バッチ処理の流れ 組織、ユーザーエージェント情報DB バッチサーバー 集計結果格納DB 最終的にログをHDFSに保存 3412年9月23日日曜日
  45. 45. 集計処理の分類 • リアルタイム集計 • 小バッチ集計(30分に一回) • 大バッチ集計(一日一回) 3512年9月23日日曜日
  46. 46. 大バッチじゃないとできないこと • 集計結果としてランキング上位の結果だけ残 したい • 人気ページランキングや参照元のランキング 3612年9月23日日曜日
  47. 47. 必然的にHadoopを使用 • 1日1億PV • 非圧縮のJSONログで1日100GB • ビッグデータ 3712年9月23日日曜日
  48. 48. MapReduce言語 何をつかう? • Java MapReduce - 性能は良い、工数がかかる、一部ではアセンブリ言語と呼ばれる • Hive - SQLライク、スキーマ定義必要、効率の良いファイルフォーマット(RCFile) • Pig - 独自言語、スキーマ定義不要 • Hadoop Streaming - 好きな言語で書ける、性能は悪い 3812年9月23日日曜日
  49. 49. RCFileが魅力的なのでHiveを使用 それぞれのRow Groupの中でカラム指向のフォーマット 必要なカラムだけのread、高い圧縮率 最近ではPigもRCFileを使える? 3912年9月23日日曜日
  50. 50. 大バッチ処理の流れ JSONテキストログを RCFileに変換 (100GBのログが十数GB Hive Server 程度まで圧縮) ランキング集計バッチ処理 集計結果格納DB 4012年9月23日日曜日
  51. 51. Hiveでは細かい処理はしにくい? • SQLだけでは出来ることに限りがある • UDF (User-Defined Function) • UDAF (User-Defined Aggregation Function) • UDF, UDAFを使うことによって柔軟な処理! • 簡単です 4112年9月23日日曜日
  52. 52. まとめ • アクセス解析は、ビッグデータとリアルタイムの両 立が重要に • リアルタイム、小バッチ、大バッチの3段階集計で 処理 ユーザーローカルではウェブ解析に興味のあるエンジ ニアを募集中です! 4212年9月23日日曜日

×