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.

HBase×Impalaで作るアドテク 「GMOプライベートDMP」@HBaseMeetupTokyo2015Summer

5,497 views

Published on

GMOインターネットグループのアドテク・サービスの一つ「GMOプライベートDMP」。GMOアプリクラウドのインフラにCDHのHadoopエコシステムを構築しました。コア・テクノロジーとしてのHBase×Impala活用事例と、システム設計についてご紹介します。

Published in: Technology
  • Dating for everyone is here: ❤❤❤ http://bit.ly/36cXjBY ❤❤❤
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Sex in your area is here: ♥♥♥ http://bit.ly/36cXjBY ♥♥♥
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

HBase×Impalaで作るアドテク 「GMOプライベートDMP」@HBaseMeetupTokyo2015Summer

  1. 1. HBase×Impalaで作るアドテク 「GMOプライベートDMP」
  2. 2. 1 自己紹介 片野 道雄 所属 GMOアドパートナーズ株式会社 グループCTO室 マネージャー 兼 GMOインターネット株式会社 次世代システム研究室 マネージャー キャリア データベースエンジニア出身 DB/NoSQL 経験 Oracle RAC, MySQL, MySQL Cluster, Percona Server (@Fusion-io), MariaDB Galera Cluster, PostgreSQL (+ Slony-I), Solr, Cassandra,
  3. 3. 2 ●1児のパパ ▪ 娘です ●Jリーグ大好き ▪ 10年以上のソシオ ▪ もちろん、娘に ●最近は、Hadoopに注力 ▪ 特にHive/HBase
  4. 4. 3 目次 1. そもそも「DMP」ってなに? 2. 「GMOプライベートDMP」について 3. システムで目指したもの - Hadoopエコシステム 4. システム構成 - GMOアプリクラウド 5. HBase x Impala 活用事例 6. まとめ
  5. 5. 4 1. そもそも「DMP」ってなに? 2. 「GMOプライベートDMP」について 3. システムで目指したもの - Hadoopエコシステム 4. システム構成 - GMOアプリクラウド 5. HBase x Impala 活用事例 6. まとめ 1章
  6. 6. 5 DMP = Data Management Platform データをためて活用する「箱」 ▪ パブリックDMP ▪ プライベートDMP アドテク業界で主に使われている言葉
  7. 7. 6 DMPの活用 ⇒ ネット広告の配信に活用 ⇒ データ分析 ⇒ メール配信、LPO … etc ● アドネットワークやDSPと連携
  8. 8. 7 アドネットワークやDSPとは、 JSタグで連携 = タグ発火 (Piggy Back) DMPから 広告配信
  9. 9. 8 パブリックDMPとプライベートDMPの比較
  10. 10. 9 パブリックDMP いろんなサイトに来た人を分類(セグメント 作成)、広告配信や調査に活用 提携する媒体からCookie IDを収集、統合して 利用または販売
  11. 11. 10 プライベートDMP 自社のサイトに来た人を分類(セグメント作 成)、広告・メール配信や顧客分析に活用 会員属性・購買履歴などの会員データと結び つけて(CookieID+会員ID)、分類に利用 ロイヤリティ向上
  12. 12. 11 1. そもそも「DMP」ってなに? 2. 「GMOプライベートDMP」について 3. システムで目指したもの - Hadoopエコシステム 4. システム構成 - GMOアプリクラウド 5. HBase x Impala 活用事例 6. まとめ 2章
  13. 13. 12 GMO NIKKO 社が作った プライベートDMP http://pr.gmopdmp.jp/
  14. 14. 13 セグメントが画面操作で簡単に作れます
  15. 15. 14 さまざまな条件をクエリ不要で設定可能
  16. 16. 15 ▪ 画面だけで自由にセグメント作成 •難しいSQLクエリを書かなくてもOK ▪ セグメント作成から、広告配信可能な状態 になるまでが速い どんな仕組みか? の特徴
  17. 17. 16 ×
  18. 18. 17 1. そもそも「DMP」ってなに? 2. 「GMOプライベートDMP」について 3. システムで目指したもの - Hadoopエコシステム 4. システム構成 - GMOアプリクラウド 5. HBase x Impala 活用事例 6. まとめ 3章
  19. 19. 18 セグメントによって、SQLクエリが違う。 下記のようにシステムが分かれていると、たくさんのお客様のセグメント のクエリ処理が間に合わない。
  20. 20. 19 データ移動をさせないで、ひとつのシステムに。 = CDH
  21. 21. 20 目指したのは、以下を満たすシステム ▪ データの移動時間が少ない •できるだけクエリの実行時間のみに ▪ システムがバラバラでない •システム同士を蜜結合したりしない ▪ ビッグデータ&高負荷に対応できる •かつ、スケールアウトしやすい
  22. 22. 21 やっぱり、Hadoopエコシステム
  23. 23. 22 1. そもそも「DMP」ってなに? 2. 「GMOプライベートDMP」について 3. システムで目指したもの - Hadoopエコシステム 4. システム構成 - GMOアプリクラウド 5. HBase x Impala 活用事例 6. まとめ 4章
  24. 24. 23 これがシステム の全容です
  25. 25. 24 CDH の推奨スペック ▪ ディスク:1~4TB の HDD を 12~24台積む (JBOD) ▪ CPU:2~2.5GHz の 4/6/8コア CPU × 2 ▪ RAM:64~512GB (Impala を利利⽤⽤する場合は 128GB 以上を推奨) ▪ ネットワーク:10Gbit (20台以下であれば 1Gbit) もちろんワークロード次第
  26. 26. 25 AWS の EC2 のハイスペックなど ▪ m4.4xlarge / m4.10xlarge / r3.4xlarge … etc 24時間 365日 稼動しっぱなしは金額的に厳しい
  27. 27. 26 http://cloud.gmo.jp/
  28. 28. 27 CDH クラスタ RAID なし Hbase 8G Mem Impala 数十G~ Mem
  29. 29. 28 1. そもそも「DMP」ってなに? 2. 「GMOプライベートDMP」について 3. システムで目指したもの - Hadoopエコシステム 4. システム構成 - GMOアプリクラウド 5. HBase x Impala 活用事例 6. まとめ 5章
  30. 30. 29 HBase x Impala 活用事例 ① HBase キー設計(セグメントデータを prefix scan) ② Column Family の設計(TTLを変える、挿入タイミング) ③ HBase と Impala の連携(Hiveの外部テーブル) ④ マスターデータを1行1セルにJSONで ⑤ HBase までのデータフロー設計 (Flume ⇒ Impala ⇒ 画面操作 ⇒ MQ ⇒ Impala ⇒ Hbase) ⑥ Impala クエリ性能
  31. 31. 30 ① HBase キー設計
  32. 32. 31
  33. 33. 32
  34. 34. 33
  35. 35. 34
  36. 36. 35 例) Scan scan = new Scan(prefixStart, prefixEnd); prefixStart = “AAAAA_” prefixEnd = “AAAAA_XXX”
  37. 37. 36 query 1 query 2 ② Column Family の設計
  38. 38. 37 ▪ Hive のテーブルを通して、ImpalaクエリからHBase テーブルに読み書きできる ▪ HBase テーブルを先に作り、Hive は外部テーブルと して作るのがポイント 通常の Hive テーブルとして作ると、HBase のデータ項目 が増えたとき Hive 側だけで柔軟に対応できなくなる HBase x Impala ③ HBase x Impala の連携
  39. 39. 38 create ‘gmo.user_segments’, { NAME => ‘CF1', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'ROW', VERSIONS => 1, TTL => 86400, BLOCKCACHE => true }, { NAME => ‘CF2', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'ROW', VERSIONS => 1, TTL => -1, BLOCKCACHE => true } HBase 側でテーブル作成
  40. 40. 39 use gmo ; CREATE EXTERNAL TABLE user_segments( seg_id int ,seg_datetime string ) STORED BY ‘org.apache.hadoop.hive.hbase.HBaseStorageHandler’ WITH SERDEPROPERTIES (“hbase.columns.mapping” = “:key, CF1:qtime CF2:qtime") ; Hive 側で外部テーブル作成
  41. 41. 40 ④ マスターデータを 1 行 1 セルに JSON で
  42. 42. 41 ⑤ HBase までのデータフロー設計
  43. 43. 42
  44. 44. 43 テストデータ 総数 備考 アクセスログ(PV) 24 億件 オンライン Cookie + 会員ID オンライン オフライン 2.4 億件 オンライン +オフライン 会員属性 3000 万件 オフライン 購買履歴 30 億件 オフライン その他データ 3 億件 オフライン 総クエリ数 Impala クエリ 2880 個 1セグメント =Nクエリ 結合 ※条件を絞って 全データを結合 クエリ 分割 ⑥ Impala クエリ性能
  45. 45. 44 項目 結果 詳細 総処理時間 71 分 1 クエリの平均 処理時間 1.48 秒 2880 クエリ エラー件数 0 Impala からテーブル結合して HBase へ書き込んでいるが 平均1.5秒に収まる範囲で終わっており、すぐに参照可能に
  46. 46. 45 1. そもそも「DMP」ってなに? 2. 「GMOプライベートDMP」について 3. システムで目指したもの - Hadoopエコシステム 4. システム構成 - GMOアプリクラウド 5. HBase x Impala 活用事例 6. まとめ 6章
  47. 47. 46 ▪ HBase x Impala (or Hive) は強力 • HBase テーブル -> Hive 外部テーブル • HBase への書き込みは、ほぼ Impala の Insert のみ ▪ HBase のキー設計と Column Family 設計は柔軟 • Prefix 文字を使った Range Scan というやり方 -> 性能十分 • Column Family で、TTL を分ける、テーブル結合など • 1カラムのみに JSON ということもできる まとめ いろいろできる
  48. 48. 47 今まで書いたことを、チームメンバーみんな で考えて実際に稼動しているのが この Hadoop システムが動いているのが
  49. 49. 48 ご清聴ありがとう ございました。

×