Your SlideShare is downloading. ×
0
Copyright © UNITED, Inc. All Rights Reserved.Copyright © UNITED, Inc. All Rights Reserved.
AdStir
SSP(RTB)を支える集計インフラの変遷
1
...
Copyright © UNITED, Inc. All Rights Reserved.
自己紹介
• @fukata (github: fukata)
• ログ周り, バッチ系
• Fluentd, EMR
• Perl, Ruby, Go...
Copyright © UNITED, Inc. All Rights Reserved.
アジェンダ
• UNTIED, inc
• AdStir
• 集計インフラの変遷
• TODO
3
Copyright © UNITED, Inc. All Rights Reserved.
UNITED, inc.
4
Copyright © UNITED, Inc. All Rights Reserved.
CocoPPa
5
Copyright © UNITED, Inc. All Rights Reserved.
AdStir
6
Copyright © UNITED, Inc. All Rights Reserved.
SSP
7
自社広告
AdStir公認アドネットワーク 他社アドネットワーク
配分比率(%)に応じて抽選
RTB
自社広告
RTB
公認
在庫切れの場合...
Copyright © UNITED, Inc. All Rights Reserved.
RTB
8
AdStir DSPs
50ms
DSP A
DSP B
DSP C
オークション
bid
bid
bid
bid
Browser
Copyright © UNITED, Inc. All Rights Reserved.
ログ
• 1,000,000,000 レコード / 日
• 800 GB(非圧縮) / 日
9
Copyright © UNITED, Inc. All Rights Reserved.
集計インフラ(2011)
10
Copyright © UNITED, Inc. All Rights Reserved.
集計インフラ(2011)
11
rsync
perlスクリプトで集計
AD
(syslog)
AD
(syslog)
Batch
mysql
Copyright © UNITED, Inc. All Rights Reserved.
問題点 1
• ログファイルが日別
• ログファイルが単一サーバに集中
• rsyncがこけた時のリカバリーが手動
• 集計がスケールしにくい・・・
12
Copyright © UNITED, Inc. All Rights Reserved.
問題点 2
• 物理サーバ
• 急なリクエスト増加に対応できない
• 一度増やすと簡単にサーバ減らせない
• 回線使用料がランニングコストの1/3
13
Copyright © UNITED, Inc. All Rights Reserved.
集計インフラ(2013.04)
14
Copyright © UNITED, Inc. All Rights Reserved.
集計インフラ(2013.04)
15
fluentd
fluentd
Batch
AD
(fluentd)
AD
(fluentd)
fluentd
logslo...
Copyright © UNITED, Inc. All Rights Reserved.
問題点 1
• ログファイルが日別
=> 時間別に変更
• ログファイルが単一サーバに集中
• rsyncがこけた時のリカバリーが手動
=> fluent...
Copyright © UNITED, Inc. All Rights Reserved.
問題点 2
• 物理サーバ => EC2
• 急なリクエスト増加に対応できない
=> 5分程度で追加・投入可能
• 一度増やすと簡単にサーバ減らせない
...
Copyright © UNITED, Inc. All Rights Reserved.
集計インフラ(現在)
18
Copyright © UNITED, Inc. All Rights Reserved.
集計インフラ(現在)
19
fluentd
fluentd
AD
(fluentd)
AD
(fluentd)
ELB
Cluster
EMR
Batch
lo...
Copyright © UNITED, Inc. All Rights Reserved.
問題点
• ログファイルが単一サーバに集中
=> S3にのみアップすることで解決
• 集計がスケールしにくい・・・
=> EMR!!
20
Copyright © UNITED, Inc. All Rights Reserved.
EMR
• すぐに使い始められる
• クラスタ規模も簡単に変更できる
• クラスタのメンテコスト削減
• 1日以上かかっていた集計が2時間弱で
終わるよ...
Copyright © UNITED, Inc. All Rights Reserved.
JOB FLOWの起動
22
$ elastic-mapreduce --create 
--stream 
--mapper s3n://BUCKET...
Copyright © UNITED, Inc. All Rights Reserved.
デバッグ用オプション
23
$ elastic-mapreduce --create 
--keypair KEYPAIR_NAME 
--enable...
Copyright © UNITED, Inc. All Rights Reserved.
JOB FLOWの永続化
24
$ elastic-mapreduce --create 
--alive 
--keypair KEYPAIR_NAM...
Copyright © UNITED, Inc. All Rights Reserved.
実際のオプション例
25
$ elastic-mapreduce --create 
--name JOBFLOW_NAME
--keypair KEY...
Copyright © UNITED, Inc. All Rights Reserved.
elastic-mapreduceコマンド
• 結構色んな事が出来る
• オプションが大量にある
• Ruby 1.8系までしか対応してない
26
Copyright © UNITED, Inc. All Rights Reserved.
スクリプトでラップ
27
$ perl script/batch EMR::JobRegister 
--func rtb_report 
--from...
Copyright © UNITED, Inc. All Rights Reserved.
出力
28
elastic-mapreduce --create 
--name RtbReport
--keypair KEYPAIR_NAME 
-...
Copyright © UNITED, Inc. All Rights Reserved.
TODO
29
Copyright © UNITED, Inc. All Rights Reserved.
TODO
• hive
• streamingでmapper/reducerそれぞれを実装するのが怠い
• アドホックなクエリを気軽に実行できる
• ロ...
Copyright © UNITED, Inc. All Rights Reserved.
Thank you
31
Copyright © UNITED, Inc. All Rights Reserved.
Recruit
• http://united.jp/recruit/
• SSP, RTB配信エンジン, 集計インフラを一
緒に作りませんか?(広告に...
Upcoming SlideShare
Loading in...5
×

20130927 adstir emr

732

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
732
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
6
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "20130927 adstir emr"

  1. 1. Copyright © UNITED, Inc. All Rights Reserved.Copyright © UNITED, Inc. All Rights Reserved. AdStir SSP(RTB)を支える集計インフラの変遷 1 2013.09.27
  2. 2. Copyright © UNITED, Inc. All Rights Reserved. 自己紹介 • @fukata (github: fukata) • ログ周り, バッチ系 • Fluentd, EMR • Perl, Ruby, Go • 食べ歩き, 写真 2
  3. 3. Copyright © UNITED, Inc. All Rights Reserved. アジェンダ • UNTIED, inc • AdStir • 集計インフラの変遷 • TODO 3
  4. 4. Copyright © UNITED, Inc. All Rights Reserved. UNITED, inc. 4
  5. 5. Copyright © UNITED, Inc. All Rights Reserved. CocoPPa 5
  6. 6. Copyright © UNITED, Inc. All Rights Reserved. AdStir 6
  7. 7. Copyright © UNITED, Inc. All Rights Reserved. SSP 7 自社広告 AdStir公認アドネットワーク 他社アドネットワーク 配分比率(%)に応じて抽選 RTB 自社広告 RTB 公認 在庫切れの場合, 再抽選 他社 Browser 他アドネットワークAdStir
  8. 8. Copyright © UNITED, Inc. All Rights Reserved. RTB 8 AdStir DSPs 50ms DSP A DSP B DSP C オークション bid bid bid bid Browser
  9. 9. Copyright © UNITED, Inc. All Rights Reserved. ログ • 1,000,000,000 レコード / 日 • 800 GB(非圧縮) / 日 9
  10. 10. Copyright © UNITED, Inc. All Rights Reserved. 集計インフラ(2011) 10
  11. 11. Copyright © UNITED, Inc. All Rights Reserved. 集計インフラ(2011) 11 rsync perlスクリプトで集計 AD (syslog) AD (syslog) Batch mysql
  12. 12. Copyright © UNITED, Inc. All Rights Reserved. 問題点 1 • ログファイルが日別 • ログファイルが単一サーバに集中 • rsyncがこけた時のリカバリーが手動 • 集計がスケールしにくい・・・ 12
  13. 13. Copyright © UNITED, Inc. All Rights Reserved. 問題点 2 • 物理サーバ • 急なリクエスト増加に対応できない • 一度増やすと簡単にサーバ減らせない • 回線使用料がランニングコストの1/3 13
  14. 14. Copyright © UNITED, Inc. All Rights Reserved. 集計インフラ(2013.04) 14
  15. 15. Copyright © UNITED, Inc. All Rights Reserved. 集計インフラ(2013.04) 15 fluentd fluentd Batch AD (fluentd) AD (fluentd) fluentd logslogslogs ELB perl logs/YYYY/MM/DD/HH/${tag}.log.0.gz S3 mysql
  16. 16. Copyright © UNITED, Inc. All Rights Reserved. 問題点 1 • ログファイルが日別 => 時間別に変更 • ログファイルが単一サーバに集中 • rsyncがこけた時のリカバリーが手動 => fluentdで解決! • 集計がスケールしにくい・・・ 16
  17. 17. Copyright © UNITED, Inc. All Rights Reserved. 問題点 2 • 物理サーバ => EC2 • 急なリクエスト増加に対応できない => 5分程度で追加・投入可能 • 一度増やすと簡単にサーバ減らせない => インスタンスをストップするだけ • 回線使用料がランニングコストの1/3 => 使った分だけ(従来の1/5くらい) 17
  18. 18. Copyright © UNITED, Inc. All Rights Reserved. 集計インフラ(現在) 18
  19. 19. Copyright © UNITED, Inc. All Rights Reserved. 集計インフラ(現在) 19 fluentd fluentd AD (fluentd) AD (fluentd) ELB Cluster EMR Batch logs/YYYY/MM/DD/HH/${tag}.log.0.gz S3 Cluster mysql
  20. 20. Copyright © UNITED, Inc. All Rights Reserved. 問題点 • ログファイルが単一サーバに集中 => S3にのみアップすることで解決 • 集計がスケールしにくい・・・ => EMR!! 20
  21. 21. Copyright © UNITED, Inc. All Rights Reserved. EMR • すぐに使い始められる • クラスタ規模も簡単に変更できる • クラスタのメンテコスト削減 • 1日以上かかっていた集計が2時間弱で 終わるようになった 21
  22. 22. Copyright © UNITED, Inc. All Rights Reserved. JOB FLOWの起動 22 $ elastic-mapreduce --create --stream --mapper s3n://BUCKET/path/to/mapper.py --reducer s3n://BUCKET/path/to/reducer.py --input s3n://BUCKET/path/to/file1 --output s3n://BUCKET/path/to/output
  23. 23. Copyright © UNITED, Inc. All Rights Reserved. デバッグ用オプション 23 $ elastic-mapreduce --create --keypair KEYPAIR_NAME --enable-debugging --log-uri s3n://BUCKET/path/to/debug --stream --mapper s3n://BUCKET/path/to/mapper.py --reducer s3n://BUCKET/path/to/reducer.py --input s3n://BUCKET/path/to/file1 --output s3n://BUCKET/path/to/output
  24. 24. Copyright © UNITED, Inc. All Rights Reserved. JOB FLOWの永続化 24 $ elastic-mapreduce --create --alive --keypair KEYPAIR_NAME --enable-debugging --log-uri s3n://BUCKET/path/to/debug $ elastic-mapreduce --jobflow JOBFLOW_ID --stream --mapper s3n://BUCKET/path/to/mapper.py --reducer s3n://BUCKET/path/to/reducer.py --input s3n://BUCKET/path/to/file1 --output s3n://BUCKET/path/to/output
  25. 25. Copyright © UNITED, Inc. All Rights Reserved. 実際のオプション例 25 $ elastic-mapreduce --create --name JOBFLOW_NAME --keypair KEYPAIR_NAME --enable-debugging --log-uri s3n://BUCKET/path/to/debug --num-instances 5 --master-instance-type m1.large --slave-instance-type c1.medium --stream --jobconf stream.recordreader.compression=gzip --mapper s3n://BUCKET/path/to/mapper.py --reducer s3n://BUCKET/path/to/reducer.py --input s3n://BUCKET/path/to/file1 --output s3n://BUCKET/path/to/output
  26. 26. Copyright © UNITED, Inc. All Rights Reserved. elastic-mapreduceコマンド • 結構色んな事が出来る • オプションが大量にある • Ruby 1.8系までしか対応してない 26
  27. 27. Copyright © UNITED, Inc. All Rights Reserved. スクリプトでラップ 27 $ perl script/batch EMR::JobRegister --func rtb_report --from ‘2013-09-27 13:00:00’ --to ‘2013-09-27 14:00:00’
  28. 28. Copyright © UNITED, Inc. All Rights Reserved. 出力 28 elastic-mapreduce --create --name RtbReport --keypair KEYPAIR_NAME --enable-debugging --log-uri s3n://BUCKET/debug/2013/09/27/rtb_report_140000 --num-instances 5 --master-instance-type m1.large --slave-instance-type c1.medium --stream --jobconf stream.recordreader.compression=gzip --mapper s3n://BUCKET/streaming/rtb_report/mapper.py --reducer s3n://BUCKET/streaming/rtb_report/reducer.py --input s3n://BUCKET/logs/2013/09/27/13/bid.*, s3n://BUCKET/logs/2013/09/27/13/ impression.*, s3n://BUCKET/logs/2013/09/27/13/click.* --output s3n://BUCKET/output/2013/09/27/rtb_report_140000
  29. 29. Copyright © UNITED, Inc. All Rights Reserved. TODO 29
  30. 30. Copyright © UNITED, Inc. All Rights Reserved. TODO • hive • streamingでmapper/reducerそれぞれを実装するのが怠い • アドホックなクエリを気軽に実行できる • ログデータの中間処理 • 検証では4倍ほど速くなった • job監視・可視化 • ステータス、実行時間 等 30
  31. 31. Copyright © UNITED, Inc. All Rights Reserved. Thank you 31
  32. 32. Copyright © UNITED, Inc. All Rights Reserved. Recruit • http://united.jp/recruit/ • SSP, RTB配信エンジン, 集計インフラを一 緒に作りませんか?(広告に興味なく ても大丈夫です) • go書きたい人 32
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×