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

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

Editor's Notes

  • #7 このスライドを説明した後、http://www.tableau.com/ja-jp/products このデモムービーの冒頭22秒をみせる
  • #8 このスライドを説明した後、http://www.tableau.com/ja-jp/products このデモムービーの冒頭22秒をみせる
  • #9 このスライドを説明した後、http://www.tableau.com/ja-jp/products このデモムービーの冒頭22秒をみせる
  • #10 このスライドを説明した後、http://www.tableau.com/ja-jp/products このデモムービーの冒頭22秒をみせる
  • #11 このスライドを説明した後、http://www.tableau.com/ja-jp/products このデモムービーの冒頭22秒をみせる
  • #12 このスライドを説明した後、http://www.tableau.com/ja-jp/products このデモムービーの冒頭22秒をみせる
  • #22 このスライドを説明した後、http://www.tableau.com/ja-jp/products このデモムービーの冒頭22秒をみせる