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.

btech lab. #2_ezoe

6 views

Published on

b→tech lab. #2 LT資料
「ビッグデータ活用の根幹!月間5億PVのWebデータ処理基盤」
江副 廉人

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

btech lab. #2_ezoe

  1. 1. ビッグデータ活用の根幹! 月間5億PVの Webデータ処理基盤
  2. 2. 皆さんこんばんは
  3. 3. まずは簡単に自己紹介
  4. 4. 福岡県出身。 2018年4月フロムスクラッチ入社後、 Technology Development Co. の b→dash2.0 開発チームにて scalaを用いたwebログ解析基盤の設 計から実装までを担当。 現在は月間5億PVのデータを処理する 基盤を運用する傍ら、 新規事業チームのアプリ開発にあたって、 バックエンドからフロントエンドまで設計か ら実装に携わる。 江副廉人
  5. 5. 本日私からは Webログ基盤についてお話しします
  6. 6. その前に簡単に 「b→dash」についてご説明します
  7. 7. 統合取得 活用 DWH
  8. 8. 統合取得 活用 DWH 基幹システム Bizデータ Webデータ
  9. 9. 統合取得 活用 DWH 基幹システム Bizデータ Webデータ サイト 回遊情報 流入先 情報
  10. 10. 統合取得 活用 DWH 基幹システム Bizデータ Webデータ 顧客 データ 売上 データ 商品 データ サイト 回遊情報 流入先 情報
  11. 11. 統合取得 活用 DWH 基幹システム Bizデータ Webデータ 顧客 データ 売上 データ 商品 データ サイト 回遊情報 流入先 情報
  12. 12. 統合取得 活用 DWH 基幹システム Bizデータ Webデータ 顧客 データ 売上 データ 商品 データ サイト 回遊情報 流入先 情報 ・27歳 ・男性 ・先月入会 ・営業の本をECで検索
  13. 13. 統合取得 活用 DWH 基幹システム Bizデータ Webデータ 顧客 データ 売上 データ 商品 データ サイト 回遊情報 流入先 情報 ・27歳 ・男性 ・先月入会 ・営業の本をECで検索
  14. 14. 統合取得 活用 DWH 基幹システム Bizデータ Webデータ 顧客 データ 売上 データ 商品 データ サイト 回遊情報 流入先 情報 ・27歳 ・男性 ・先月入会 ・営業の本をECで検索 メール配信
  15. 15. 統合取得 活用 DWH 基幹システム Bizデータ Webデータ 顧客 データ 売上 データ 商品 データ サイト 回遊情報 流入先 情報 ・27歳 ・男性 ・先月入会 ・営業の本をECで検索 メール配信 分析(レポート)
  16. 16. 統合取得 活用 DWH 基幹システム Bizデータ Webデータ 顧客 データ 売上 データ 商品 データ サイト 回遊情報 流入先 情報 ・27歳 ・男性 ・先月入会 ・営業の本をECで検索 メール配信 分析(レポート) レコメンド
  17. 17. 統合取得 活用 DWH 基幹システム Bizデータ Webデータ 顧客 データ 売上 データ 商品 データ サイト 回遊情報 流入先 情報 ・27歳 ・男性 ・先月入会 ・営業の本をECで検索 メール配信 分析(レポート) レコメンド
  18. 18. 統合取得 活用 DWH 基幹システム Bizデータ Webデータ 顧客 データ 売上 データ 商品 データ サイト 回遊情報 流入先 情報 ・27歳 ・男性 ・先月入会 ・営業の本をECで検索 メール配信 分析(レポート) レコメンド 私からは ログ基盤についてお話します
  19. 19. 月間5億PVの webログ処理基盤
  20. 20. ※「うちはこういうふうにやっています」 という涙ぐましいお話になります
  21. 21. ※ちなみに で書かれております
  22. 22. 1.ログ基盤とは 2.b→dashのログ基盤 3.今後やっていきたいこと
  23. 23. 1.ログ基盤とは
  24. 24. コンピュータの利用履歴を自動的に集めて、必要な部分だけ取り出したり、 データを加工したり、データベース形式で出力したりするためのプログラム(ソフ トウェア)。 複数の呼び方があるものの、ほぼ同じ種類のプログラムだと思っていい。代 表的な製品に、Fluentd(フルーエントディー)がある。 現在、ほとんどのサーバー(情報システム)は、いつどんな状態だったか、ど んな動作をしたか、誰がどんなアクセスをしたか、といった記録が自動的に残る ようになっている。この記録を、ログという。 そしてログを解析すると、トラブルがあったとき原因究明が容易になり、復旧 もスムーズになる。また、トラブルの予兆を発見できることもある。さらに、ログを 読み解くことでシステムやサービスの改善に役立てることも可能だ。 しかし今は、複数のサーバーが並行したり連携したりして動いている。そして、 それぞれのサーバーにログが残る。しかも、その量は膨大なものになっている。 ログ自体は自動的に残っていくのでどんどん蓄積されるものの、複数のサー バーからログを収集して、それを解析するのは非常に手間のかかる作業になる。 そこで、ログ収集ツール(ログコレクタ)を使うことで、複数のサーバーから自 動的にログを集めたり、必要な部分だけ抽出するといった加工を行ったり、 データベース等に出力したりすることが容易になる。 Wiki「ログ基盤」より
  25. 25. コンピュータの利用履歴を自動的に集めて、必要な部分だけ取り出したり、 データを加工したり、データベース形式で出力したりするためのプログラム(ソフ トウェア)。 複数の呼び方があるものの、ほぼ同じ種類のプログラムだと思っていい。代 表的な製品に、Fluentd(フルーエントディー)がある。 現在、ほとんどのサーバー(情報システム)は、いつどんな状態だったか、ど んな動作をしたか、誰がどんなアクセスをしたか、といった記録が自動的に残る ようになっている。この記録を、ログという。 そしてログを解析すると、トラブルがあったとき原因究明が容易になり、復旧 もスムーズになる。また、トラブルの予兆を発見できることもある。さらに、ログを 読み解くことでシステムやサービスの改善に役立てることも可能だ。 しかし今は、複数のサーバーが並行したり連携したりして動いている。そして、 それぞれのサーバーにログが残る。しかも、その量は膨大なものになっている。 ログ自体は自動的に残っていくのでどんどん蓄積されるものの、複数のサー バーからログを収集して、それを解析するのは非常に手間のかかる作業になる。 そこで、ログ収集ツール(ログコレクタ)を使うことで、複数のサーバーから自 動的にログを集めたり、必要な部分だけ抽出するといった加工を行ったり、 データベース等に出力したりすることが容易になる。 Wiki「ログ基盤」より なるほど…ぐぬぬzzz
  26. 26. コンピュータの利用履歴を自動的に集めて、必要な部分だけ取り出したり、 データを加工したり、データベース形式で出力したりするためのプログラム(ソフ トウェア)。 複数の呼び方があるものの、ほぼ同じ種類のプログラムだと思っていい。代 表的な製品に、Fluentd(フルーエントディー)がある。 現在、ほとんどのサーバー(情報システム)は、いつどんな状態だったか、ど んな動作をしたか、誰がどんなアクセスをしたか、といった記録が自動的に残る ようになっている。この記録を、ログという。 そしてログを解析すると、トラブルがあったとき原因究明が容易になり、復旧 もスムーズになる。また、トラブルの予兆を発見できることもある。さらに、ログを 読み解くことでシステムやサービスの改善に役立てることも可能だ。 しかし今は、複数のサーバーが並行したり連携したりして動いている。そして、 それぞれのサーバーにログが残る。しかも、その量は膨大なものになっている。 ログ自体は自動的に残っていくのでどんどん蓄積されるものの、複数のサー バーからログを収集して、それを解析するのは非常に手間のかかる作業になる。 そこで、ログ収集ツール(ログコレクタ)を使うことで、複数のサーバーから自 動的にログを集めたり、必要な部分だけ抽出するといった加工を行ったり、 データベース等に出力したりすることが容易になる。 Wiki「ログ基盤」より 要は
  27. 27. コンピュータの利用履歴を自動的に集めて、必要な部分だけ取り出したり、 データを加工したり、データベース形式で出力したりするためのプログラム(ソフ トウェア)。 複数の呼び方があるものの、ほぼ同じ種類のプログラムだと思っていい。代 表的な製品に、Fluentd(フルーエントディー)がある。 現在、ほとんどのサーバー(情報システム)は、いつどんな状態だったか、ど んな動作をしたか、誰がどんなアクセスをしたか、といった記録が自動的に残る ようになっている。この記録を、ログという。 そしてログを解析すると、トラブルがあったとき原因究明が容易になり、復旧 もスムーズになる。また、トラブルの予兆を発見できることもある。さらに、ログを 読み解くことでシステムやサービスの改善に役立てることも可能だ。 しかし今は、複数のサーバーが並行したり連携したりして動いている。そして、 それぞれのサーバーにログが残る。しかも、その量は膨大なものになっている。 ログ自体は自動的に残っていくのでどんどん蓄積されるものの、複数のサー バーからログを収集して、それを解析するのは非常に手間のかかる作業になる。 そこで、ログ収集ツール(ログコレクタ)を使うことで、複数のサーバーから自 動的にログを集めたり、必要な部分だけ抽出するといった加工を行ったり、 データベース等に出力したりすることが容易になる。 Wiki「ログ基盤」より 集めたログから必要なものを取り出して 使えるように整形するもの
  28. 28. コンピュータの利用履歴を自動的に集めて、必要な部分だけ取り出したり、 データを加工したり、データベース形式で出力したりするためのプログラム(ソフ トウェア)。 複数の呼び方があるものの、ほぼ同じ種類のプログラムだと思っていい。代 表的な製品に、Fluentd(フルーエントディー)がある。 現在、ほとんどのサーバー(情報システム)は、いつどんな状態だったか、ど んな動作をしたか、誰がどんなアクセスをしたか、といった記録が自動的に残る ようになっている。この記録を、ログという。 そしてログを解析すると、トラブルがあったとき原因究明が容易になり、復旧 もスムーズになる。また、トラブルの予兆を発見できることもある。さらに、ログを 読み解くことでシステムやサービスの改善に役立てることも可能だ。 しかし今は、複数のサーバーが並行したり連携したりして動いている。そして、 それぞれのサーバーにログが残る。しかも、その量は膨大なものになっている。 ログ自体は自動的に残っていくのでどんどん蓄積されるものの、複数のサー バーからログを収集して、それを解析するのは非常に手間のかかる作業になる。 そこで、ログ収集ツール(ログコレクタ)を使うことで、複数のサーバーから自 動的にログを集めたり、必要な部分だけ抽出するといった加工を行ったり、 データベース等に出力したりすることが容易になる。 Wiki「ログ基盤」より b→dashではどうなっているか
  29. 29. 2.b→dashのログ基盤
  30. 30. で、やりたいこと
  31. 31. b→dash 基幹システム Bizデータ 顧客 データ 売上 データ 商品 データ サイト 回遊情報 流入先 情報 Webデータ
  32. 32. b→dash 基幹システム Bizデータ 顧客 データ 売上 データ 商品 データ サイト 回遊情報 流入先 情報 Webデータ 1.計測タグから飛んでくるログを b→dashに連携すること
  33. 33. b→dash 基幹システム Bizデータ 顧客 データ 売上 データ 商品 データ サイト 回遊情報 流入先 情報 Webデータ 1.計測タグから飛んでくるログを b→dashに連携すること 2.ログを集計後、セグメントや レポート系のアプリケーションに 利用できるように整形すること
  34. 34. b→dash 基幹システム Bizデータ 顧客 データ 売上 データ 商品 データ サイト 回遊情報 流入先 情報 Webデータ 1.計測タグから飛んでくるログを b→dashに連携すること 2.ログを集計後、セグメントや レポート系のアプリケーションに 利用できるように整形すること
  35. 35. b→dash 基幹システム Bizデータ 顧客 データ 売上 データ 商品 データ サイト 回遊情報 流入先 情報 Webデータ 1.計測タグから飛んでくるログを b→dashに連携すること 2.ログを集計後、セグメントや レポート系のアプリケーションに 利用できるように整形すること ・1セッションごとのデータを利用したい ・訪問者ID単位でまとまったデータを利用した い ・コンバージョン判定されたデータを利用したい ・特定のログは利用したくない
  36. 36. b→dash 基幹システム Bizデータ 顧客 データ 売上 データ 商品 データ サイト 回遊情報 流入先 情報 Webデータ 1.計測タグから飛んでくるログを b→dashに連携すること 2.ログを集計後、セグメントや レポート系のアプリケーションに 利用できるように整形すること ・1セッションごとのデータを利用したい ・訪問者ID単位でまとまったデータを利用した い ・コンバージョン判定されたデータを利用したい ・特定のログは利用したくない これらを満たせばOK!
  37. 37. 実装の概観
  38. 38. Denselog_cutter Activities_processor Idmapper 3つのサービス
  39. 39. Denselog_cutter Activities_processor Idmapper 3つのサービス end user s3 Report DWH
  40. 40. Denselog_cutter Activities_processor Idmapper 3つのサービス end user access log s3 Report DWH
  41. 41. Denselog_cutter Activities_processor Idmapper 3つのサービス end user access log s3 Report DWH raw log アカウントごとに 選り分けられたログ
  42. 42. Denselog_cutter Activities_processor Idmapper 3つのサービス end user access log s3 Report DWH raw log activities_web アカウントごとに 選り分けられたログ パースし、そのまま 1レコードにしたログ
  43. 43. Denselog_cutter Activities_processor Idmapper 3つのサービス end user access log s3 Report DWH raw log activities_web user_id_mappings アカウントごとに 選り分けられたログ パースし、そのまま 1レコードにしたログ 顧客テーブルと 紐づいたログ
  44. 44. 実装の詳細
  45. 45. Denselog_cutter Activities_processor Idmapper 3つのサービス
  46. 46. Denselog_cutter Activities_processor Idmapper 3つのサービス
  47. 47. check log types upload raw-log file daemon:kirby-batch-receive bdash2-activity-logtracker denselogCutter end user denselog <sene> access log <put> denselog CutDenselogUsecase <event> put object check account code Denselog_cutter 1.denselog ファイルの中のアクセスログ各レコードから account_code を取得し選別する 2.denselog ファイルの中のアクセスログ各レコードから行動種別のサブカテゴリを取得し選別する 3.アカウント/サブカテゴリ別に選り分けたアクセスログをそれぞれログファイル rawlog に出力する 4.出力した rawlog を S3 にアップロードする
  48. 48. Denselog_cutter Activities_processor Idmapper 3つのサービス
  49. 49. 集計処理 Hive テーブルプロビジョニング ExecutionUsecase with ReprocessMode ExecutionUsecase with StandardMode CreateTablesUsecase platform-batch <cron> execute actproc データ再作成作業担当者 platform-in <cron> provision hive tables <hiveQL> create tables <hiveQL> add partitions upload OrcFiles hive tables maintenance report bdash2-hive daemon:kirby-batch-receive actproc actproc <daemon> polling Activities_processor Web ログをパースし b→dash 内部で利用可能なデータに変換する ・アクセスログをそのまま1レコードに変換したデータ(activities_web) ・activities_webを集計にかけたサマリデータ(session_summaries, visitor_summaries) ・activities_webに設定系を反映させて得られた判定データ(conversions) なお、この際にIPアドレスや流入元のリファラなどのマスタデータや計測除外設定との照合も行う
  50. 50. Denselog_cutter Activities_processor Idmapper 3つのサービス
  51. 51. MappingType=1 ActWebMappingUsecase MappingType=2 ActSDKMappingUsecase ExternalTransactionMappingService ExternalCustomerMappingService DeliveryMappingService bdash2-hive <each execution> execute idmapper <daemon> polling actproc daemon:kirby-batch-receive idmapper idmapper report <hiveQL> repair partitions hive tables maintenance Idmapper 1.アクティビティデータに含まれるユーザ情報を各データビューの顧客テーブルと紐付ける 2.紐付けの結果を user_id_mappings に反映する
  52. 52. b→dash 基幹システム Bizデータ 顧客 データ 売上 データ 商品 データ サイト 回遊情報 流入先 情報 Webデータ 1.計測タグから飛んでくるログを b→dashに連携すること 2.ログを集計後、セグメントや レポート系のアプリケーションに 利用できるように整形すること ・1セッションごとのデータを利用したい ・訪問者ID単位でまとまったデータを利用した い ・コンバージョン判定されたデータを利用したい ・特定のログは利用したくない
  53. 53. b→dash 基幹システム Bizデータ 顧客 データ 売上 データ 商品 データ サイト 回遊情報 流入先 情報 Webデータ 1.計測タグから飛んでくるログを b→dashに連携すること 2.ログを集計後、セグメントや レポート系のアプリケーションに 利用できるように整形すること ・1セッションごとのデータを利用したい ・訪問者ID単位でまとまったデータを利用した い ・コンバージョン判定されたデータを利用したい ・特定のログは利用したくない クリア!!!!
  54. 54. 3.今後やっていきたいこと
  55. 55. いろいろありますが…
  56. 56. ひとまず
  57. 57. で書き換える
  58. 58. 深夜に障害対応 できるの僕だけ
  59. 59. 保守開発できる人 増やしたい(切実)
  60. 60. という冗談はさておいて
  61. 61. 統合取得 活用 DWH 基幹システム Bizデータ Webデータ 顧客 データ 売上 データ 商品 データ サイト 回遊情報 流入先 情報 ・27歳 ・男性 ・先月入会 ・営業の本をECで検索 メール配信 分析(レポート) レコメンド
  62. 62. 統合取得 活用 DWH 基幹システム Bizデータ Webデータ 顧客 データ 売上 データ 商品 データ サイト 回遊情報 流入先 情報 ・27歳 ・男性 ・先月入会 ・営業の本をECで検索 メール配信 分析(レポート) レコメンド 突然の死
  63. 63. 統合取得 活用 DWH 基幹システム Bizデータ Webデータ 顧客 データ 売上 データ 商品 データ サイト 回遊情報 流入先 情報 ・27歳 ・男性 ・先月入会 ・営業の本をECで検索 メール配信 分析(レポート) レコメンド 突然の死 蒸発
  64. 64. 統合取得 活用 DWH 基幹システム Bizデータ Webデータ 顧客 データ 売上 データ 商品 データ サイト 回遊情報 流入先 情報 ・27歳 ・男性 ・先月入会 ・営業の本をECで検索 メール配信 分析(レポート) レコメンド 突然の死 蒸発 概念に なる 概念に なる 概念に なる
  65. 65. 統合取得 活用 DWH 基幹システム Bizデータ Webデータ 顧客 データ 売上 データ 商品 データ サイト 回遊情報 流入先 情報 ・27歳 ・男性 ・先月入会 ・営業の本をECで検索 メール配信 分析(レポート) レコメンド 突然の死 蒸発 概念に なる 概念に なる 概念に なる 処理の異常終了や 遅延があるとまずい…
  66. 66. 統合取得 活用 DWH 基幹システム Bizデータ Webデータ 顧客 データ 売上 データ 商品 データ サイト 回遊情報 流入先 情報 ・27歳 ・男性 ・先月入会 ・営業の本をECで検索 メール配信 分析(レポート) レコメンド 突然の死 蒸発 概念に なる 概念に なる 概念に なる そのため 一部改修したいところが
  67. 67. Denselog_cutter Activities_processor Idmapper 3つのサービス end user access log s3 Report DWH raw log activities_web user_id_mappings アカウントごとに 選り分けられたログ パースし、そのまま 1レコードにしたログ 顧客テーブルと 紐づいたログ
  68. 68. 集計処理 Hive テーブルプロビジョニング ExecutionUsecase with ReprocessMode ExecutionUsecase with StandardMode CreateTablesUsecase platform-batch <cron> execute actproc データ再作成作業担当者 platform-in <cron> provision hive tables <hiveQL> create tables <hiveQL> add partitions upload OrcFiles hive tables maintenance report bdash2-hive daemon:kirby-batch-receive actproc actproc <daemon> polling Activities_processor Web ログをパースし b→dash 内部で利用可能なデータに変換する ・アクセスログをそのまま1レコードに変換したデータ(activities_web) ・activities_webを集計にかけたサマリデータ(session_summaries, visitor_summaries) ・activities_webに設定系を反映させて得られた判定データ(conversions) なお、この際にIPアドレスや流入元のリファラなどのマスタデータや計測除外設定との照合も行う
  69. 69. 集計処理 Hive テーブルプロビジョニング ExecutionUsecase with ReprocessMode ExecutionUsecase with StandardMode CreateTablesUsecase platform-batch <cron> execute actproc データ再作成作業担当者 platform-in <cron> provision hive tables <hiveQL> create tables <hiveQL> add partitions upload OrcFiles hive tables maintenance report bdash2-hive daemon:kirby-batch-receive actproc actproc <daemon> polling Activities_processor Web ログをパースし b→dash 内部で利用可能なデータに変換する ・アクセスログをそのまま1レコードに変換したデータ(activities_web) ・activities_webを集計にかけたサマリデータ(session_summaries, visitor_summaries) ・activities_webに設定系を反映させて得られた判定データ(conversions) なお、この際にIPアドレスや流入元のリファラなどのマスタデータや計測除外設定との照合も行う
  70. 70. 集計処理 Hive テーブルプロビジョニング ExecutionUsecase with ReprocessMode ExecutionUsecase with StandardMode CreateTablesUsecase platform-batch <cron> execute actproc データ再作成作業担当者 platform-in <cron> provision hive tables <hiveQL> create tables <hiveQL> add partitions upload OrcFiles hive tables maintenance report bdash2-hive daemon:kirby-batch-receive actproc actproc <daemon> polling Activities_processor Web ログをパースし b→dash 内部で利用可能なデータに変換する ・アクセスログをそのまま1レコードに変換したデータ(activities_web) ・アクセスログを集計にかけたサマリデータ(session_summaries, visitor_summaries) ・アクセスログに設定系を反映させて得られた判定データ(conversions) なお、この際にIPアドレスや流入元のリファラなどのマスタデータや計測除外設定との照合も行う b→dashではHive/Prestoを使って バックエンドの集計よりを行っています
  71. 71. 集計処理 Hive テーブルプロビジョニング ExecutionUsecase with ReprocessMode ExecutionUsecase with StandardMode CreateTablesUsecase platform-batch <cron> execute actproc データ再作成作業担当者 platform-in <cron> provision hive tables <hiveQL> create tables <hiveQL> add partitions upload OrcFiles hive tables maintenance report bdash2-hive daemon:kirby-batch-receive actproc actproc <daemon> polling Activities_processor Web ログをパースし b→dash 内部で利用可能なデータに変換する ・アクセスログをそのまま1レコードに変換したデータ(activities_web) ・アクセスログを集計にかけたサマリデータ(session_summaries, visitor_summaries) ・アクセスログに設定系を反映させて得られた判定データ(conversions) なお、この際にIPアドレスや流入元のリファラなどのマスタデータや計測除外設定との照合も行う Webログ基盤でも集計処理にはHive/Presto といった分散ファイルシステムを利用中
  72. 72. 集計処理 Hive テーブルプロビジョニング ExecutionUsecase with ReprocessMode ExecutionUsecase with StandardMode CreateTablesUsecase platform-batch <cron> execute actproc データ再作成作業担当者 platform-in <cron> provision hive tables <hiveQL> create tables <hiveQL> add partitions upload OrcFiles hive tables maintenance report bdash2-hive daemon:kirby-batch-receive actproc actproc <daemon> polling Activities_processor Web ログをパースし b→dash 内部で利用可能なデータに変換する ・アクセスログをそのまま1レコードに変換したデータ(activities_web) ・アクセスログを集計にかけたサマリデータ(session_summaries, visitor_summaries) ・アクセスログに設定系を反映させて得られた判定データ(conversions) なお、この際にIPアドレスや流入元のリファラなどのマスタデータや計測除外設定との照合も行う ログの集計結果は Orcファイルに出力しています (HDFS向けに最適化されたCSVファイルみたいなもの)
  73. 73. 集計処理 Hive テーブルプロビジョニング ExecutionUsecase with ReprocessMode ExecutionUsecase with StandardMode CreateTablesUsecase platform-batch <cron> execute actproc データ再作成作業担当者 platform-in <cron> provision hive tables <hiveQL> create tables <hiveQL> add partitions upload OrcFiles hive tables maintenance report bdash2-hive daemon:kirby-batch-receive actproc actproc <daemon> polling Activities_processor Web ログをパースし b→dash 内部で利用可能なデータに変換する ・アクセスログをそのまま1レコードに変換したデータ(activities_web) ・アクセスログを集計にかけたサマリデータ(session_summaries, visitor_summaries) ・アクセスログに設定系を反映させて得られた判定データ(conversions) なお、この際にIPアドレスや流入元のリファラなどのマスタデータや計測除外設定との照合も行う 課題 集計処理に無駄に時間がかかっている
  74. 74. 集計処理 Hive テーブルプロビジョニング ExecutionUsecase with ReprocessMode ExecutionUsecase with StandardMode CreateTablesUsecase platform-batch <cron> execute actproc データ再作成作業担当者 platform-in <cron> provision hive tables <hiveQL> create tables <hiveQL> add partitions upload OrcFiles hive tables maintenance report bdash2-hive daemon:kirby-batch-receive actproc actproc <daemon> polling Activities_processor Web ログをパースし b→dash 内部で利用可能なデータに変換する ・アクセスログをそのまま1レコードに変換したデータ(activities_web) ・アクセスログを集計にかけたサマリデータ(session_summaries, visitor_summaries) ・アクセスログに設定系を反映させて得られた判定データ(conversions) なお、この際にIPアドレスや流入元のリファラなどのマスタデータや計測除外設定との照合も行う 原因(の一つ) 「Orcファイルの出力単位」と 「バッチ処理の対象期間の最小単位」とが 必ずしも一致していない
  75. 75. 集計処理 Hive テーブルプロビジョニング ExecutionUsecase with ReprocessMode ExecutionUsecase with StandardMode CreateTablesUsecase platform-batch <cron> execute actproc データ再作成作業担当者 platform-in <cron> provision hive tables <hiveQL> create tables <hiveQL> add partitions upload OrcFiles hive tables maintenance report bdash2-hive daemon:kirby-batch-receive actproc actproc <daemon> polling Activities_processor Web ログをパースし b→dash 内部で利用可能なデータに変換する ・アクセスログをそのまま1レコードに変換したデータ(activities_web) ・activities_webを集計にかけたサマリデータ(session_summaries, visitor_summaries) ・activities_webに設定系を反映させて得られた判定データ(conversions) なお、この際にIPアドレスや流入元のリファラなどのマスタデータや計測除外設定との照合も行う
  76. 76. 集計処理 Hive テーブルプロビジョニング ExecutionUsecase with ReprocessMode ExecutionUsecase with StandardMode CreateTablesUsecase platform-batch <cron> execute actproc データ再作成作業担当者 platform-in <cron> provision hive tables <hiveQL> create tables <hiveQL> add partitions upload OrcFiles hive tables maintenance report bdash2-hive daemon:kirby-batch-receive actproc actproc <daemon> polling Activities_processor Web ログをパースし b→dash 内部で利用可能なデータに変換する ・アクセスログをそのまま1レコードに変換したデータ(activities_web) ・activities_webに設定系を反映させて得られた判定データ(conversions) なお、この際にIPアドレスや流入元のリファラなどのマスタデータや計測除外設定との照合も行う ・activities_webを集計にかけたサマリデータ(session_summaries, visitor_summaries)←こやつ
  77. 77. 集計処理 Hive テーブルプロビジョニング ExecutionUsecase with ReprocessMode ExecutionUsecase with StandardMode CreateTablesUsecase platform-batch <cron> execute actproc データ再作成作業担当者 platform-in <cron> provision hive tables <hiveQL> create tables <hiveQL> add partitions upload OrcFiles hive tables maintenance report bdash2-hive daemon:kirby-batch-receive actproc actproc <daemon> polling Activities_processor Web ログをパースし b→dash 内部で利用可能なデータに変換する ・アクセスログをそのまま1レコードに変換したデータ(activities_web) ・アクセスログを集計にかけたサマリデータ(session_summaries, visitor_summaries) ・アクセスログに設定系を反映させて得られた判定データ(conversions) なお、この際にIPアドレスや流入元のリファラなどのマスタデータや計測除外設定との照合も行う session_summaries バッチ処理の最小単位より少し大きな単位で 集計している ・集計対象期間が日付をまたぐ可能性がある ・ファイルの出力単位やパーティションを単に日時で 切ると整合性が保てなくなる可能性がある
  78. 78. 集計処理 Hive テーブルプロビジョニング ExecutionUsecase with ReprocessMode ExecutionUsecase with StandardMode CreateTablesUsecase platform-batch <cron> execute actproc データ再作成作業担当者 platform-in <cron> provision hive tables <hiveQL> create tables <hiveQL> add partitions upload OrcFiles hive tables maintenance report bdash2-hive daemon:kirby-batch-receive actproc actproc <daemon> polling Activities_processor Web ログをパースし b→dash 内部で利用可能なデータに変換する ・アクセスログをそのまま1レコードに変換したデータ(activities_web) ・アクセスログを集計にかけたサマリデータ(session_summaries, visitor_summaries) ・アクセスログに設定系を反映させて得られた判定データ(conversions) なお、この際にIPアドレスや流入元のリファラなどのマスタデータや計測除外設定との照合も行う visitor_summaries クライアントサイトの訪問者の情報をcookie単位 で集計している(アカウント開設から通算で) バッチ処理が回るたびに 既存データとの照合に膨大な時間がかかっている
  79. 79. 集計処理 Hive テーブルプロビジョニング ExecutionUsecase with ReprocessMode ExecutionUsecase with StandardMode CreateTablesUsecase platform-batch <cron> execute actproc データ再作成作業担当者 platform-in <cron> provision hive tables <hiveQL> create tables <hiveQL> add partitions upload OrcFiles hive tables maintenance report bdash2-hive daemon:kirby-batch-receive actproc actproc <daemon> polling Activities_processor Web ログをパースし b→dash 内部で利用可能なデータに変換する ・アクセスログをそのまま1レコードに変換したデータ(activities_web) ・アクセスログを集計にかけたサマリデータ(session_summaries, visitor_summaries) ・アクセスログに設定系を反映させて得られた判定データ(conversions) なお、この際にIPアドレスや流入元のリファラなどのマスタデータや計測除外設定との照合も行う 解決案
  80. 80. 集計処理 Hive テーブルプロビジョニング ExecutionUsecase with ReprocessMode ExecutionUsecase with StandardMode CreateTablesUsecase platform-batch <cron> execute actproc データ再作成作業担当者 platform-in <cron> provision hive tables <hiveQL> create tables <hiveQL> add partitions upload OrcFiles hive tables maintenance report bdash2-hive daemon:kirby-batch-receive actproc actproc <daemon> polling Activities_processor Web ログをパースし b→dash 内部で利用可能なデータに変換する ・アクセスログをそのまま1レコードに変換したデータ(activities_web) ・アクセスログを集計にかけたサマリデータ(session_summaries, visitor_summaries) ・アクセスログに設定系を反映させて得られた判定データ(conversions) なお、この際にIPアドレスや流入元のリファラなどのマスタデータや計測除外設定との照合も行う なんかいい感じの 中間テーブルを作る
  81. 81. 統合取得 活用 DWH 基幹システム Bizデータ Webデータ 顧客 データ 売上 データ 商品 データ サイト 回遊情報 流入先 情報 ・27歳 ・男性 ・先月入会 ・営業の本をECで検索 メール配信 分析(レポート) レコメンド 突然の死 蒸発 概念に なる 概念に なる 概念に なる
  82. 82. 統合取得 活用 DWH 基幹システム Bizデータ Webデータ 顧客 データ 売上 データ 商品 データ サイト 回遊情報 流入先 情報 ・27歳 ・男性 ・先月入会 ・営業の本をECで検索 メール配信 分析(レポート) レコメンド 突然の死 蒸発 概念に なる 概念に なる 概念に なる たぶん回避!!!
  83. 83. 統合取得 活用 DWH 基幹システム Bizデータ Webデータ 顧客 データ 売上 データ 商品 データ サイト 回遊情報 流入先 情報 ・27歳 ・男性 ・先月入会 ・営業の本をECで検索 メール配信 分析(レポート) レコメンド 突然の死 蒸発 概念に なる 概念に なる 概念に なる 今後に期待!

×