SlideShare a Scribd company logo
1 of 32
Download to read offline
Copyright © UNITED, Inc. All Rights Reserved.Copyright © UNITED, Inc. All Rights Reserved.
AdStir
SSP(RTB)を支える集計インフラの変遷
1
2013.09.27
Copyright © UNITED, Inc. All Rights Reserved.
自己紹介
• @fukata (github: fukata)
• ログ周り, バッチ系
• Fluentd, EMR
• Perl, Ruby, Go
• 食べ歩き, 写真
2
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
公認
在庫切れの場合, 再抽選
他社
Browser 他アドネットワークAdStir
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
logslogslogs
ELB
perl
logs/YYYY/MM/DD/HH/${tag}.log.0.gz
S3
mysql
Copyright © UNITED, Inc. All Rights Reserved.
問題点 1
• ログファイルが日別
=> 時間別に変更
• ログファイルが単一サーバに集中
• rsyncがこけた時のリカバリーが手動
=> fluentdで解決!
• 集計がスケールしにくい・・・
16
Copyright © UNITED, Inc. All Rights Reserved.
問題点 2
• 物理サーバ => EC2
• 急なリクエスト増加に対応できない
=> 5分程度で追加・投入可能
• 一度増やすと簡単にサーバ減らせない
=> インスタンスをストップするだけ
• 回線使用料がランニングコストの1/3
=> 使った分だけ(従来の1/5くらい)
17
Copyright © UNITED, Inc. All Rights Reserved.
集計インフラ(現在)
18
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
Copyright © UNITED, Inc. All Rights Reserved.
問題点
• ログファイルが単一サーバに集中
=> S3にのみアップすることで解決
• 集計がスケールしにくい・・・
=> EMR!!
20
Copyright © UNITED, Inc. All Rights Reserved.
EMR
• すぐに使い始められる
• クラスタ規模も簡単に変更できる
• クラスタのメンテコスト削減
• 1日以上かかっていた集計が2時間弱で
終わるようになった
21
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
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
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
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
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 ‘2013-09-27 13:00:00’ 
--to ‘2013-09-27 14:00:00’
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
Copyright © UNITED, Inc. All Rights Reserved.
TODO
29
Copyright © UNITED, Inc. All Rights Reserved.
TODO
• hive
• streamingでmapper/reducerそれぞれを実装するのが怠い
• アドホックなクエリを気軽に実行できる
• ログデータの中間処理
• 検証では4倍ほど速くなった
• job監視・可視化
• ステータス、実行時間 等
30
Copyright © UNITED, Inc. All Rights Reserved.
Thank you
31
Copyright © UNITED, Inc. All Rights Reserved.
Recruit
• http://united.jp/recruit/
• SSP, RTB配信エンジン, 集計インフラを一
緒に作りませんか?(広告に興味なく
ても大丈夫です)
• go書きたい人
32

More Related Content

Similar to 20130927 adstir emr

Kubernetes、Flannel、CNIでWindows Container Clusterオーケストレーション
Kubernetes、Flannel、CNIでWindows Container ClusterオーケストレーションKubernetes、Flannel、CNIでWindows Container Clusterオーケストレーション
Kubernetes、Flannel、CNIでWindows Container ClusterオーケストレーションTakashi Kanai
 
Kubernetes on Alibaba Cloud
Kubernetes on Alibaba CloudKubernetes on Alibaba Cloud
Kubernetes on Alibaba Cloud真吾 吉田
 
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデート
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデートAmazon Redshift パフォーマンスチューニングテクニックと最新アップデート
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデートAmazon Web Services Japan
 
S3 を単純ストレージとして 利用する手段の比較
S3 を単純ストレージとして 利用する手段の比較S3 を単純ストレージとして 利用する手段の比較
S3 を単純ストレージとして 利用する手段の比較真治 米田
 
drecomにおけるwinning the metrics battle
drecomにおけるwinning the metrics battledrecomにおけるwinning the metrics battle
drecomにおけるwinning the metrics battleMitsuki Kenichi
 
5億件以上の求人情報を蓄積する汎用クローラエンジンのアーキテクチャと運用
5億件以上の求人情報を蓄積する汎用クローラエンジンのアーキテクチャと運用5億件以上の求人情報を蓄積する汎用クローラエンジンのアーキテクチャと運用
5億件以上の求人情報を蓄積する汎用クローラエンジンのアーキテクチャと運用Takahiro Suzuki
 
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11MapR Technologies Japan
 
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...Preferred Networks
 
Amazon EKS上の開発体験を最大化するプレビュー環境の作り方
Amazon EKS上の開発体験を最大化するプレビュー環境の作り方Amazon EKS上の開発体験を最大化するプレビュー環境の作り方
Amazon EKS上の開発体験を最大化するプレビュー環境の作り方理弘 山崎
 
LagopusとAzureとIPsecとDPDK
LagopusとAzureとIPsecとDPDKLagopusとAzureとIPsecとDPDK
LagopusとAzureとIPsecとDPDKTomoya Hibi
 
とある受託ベンダの開発環境
とある受託ベンダの開発環境とある受託ベンダの開発環境
とある受託ベンダの開発環境Tomoki Hasegawa
 
Rocroにおけるgcp活用事例
Rocroにおけるgcp活用事例Rocroにおけるgcp活用事例
Rocroにおけるgcp活用事例Kishin Yagami
 
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...NTT DATA Technology & Innovation
 
Flume cassandra real time log processing (日本語)
Flume cassandra real time log processing (日本語)Flume cassandra real time log processing (日本語)
Flume cassandra real time log processing (日本語)CLOUDIAN KK
 
[D37]MySQLの真のイノベーションはこれだ!MySQL 5.7と「実験室」 by Ryusuke Kajiyama
[D37]MySQLの真のイノベーションはこれだ!MySQL 5.7と「実験室」 by Ryusuke Kajiyama [D37]MySQLの真のイノベーションはこれだ!MySQL 5.7と「実験室」 by Ryusuke Kajiyama
[D37]MySQLの真のイノベーションはこれだ!MySQL 5.7と「実験室」 by Ryusuke Kajiyama Insight Technology, Inc.
 
[PGConf.ASIA 2018]Deep Dive on Amazon Aurora with PostgreSQL Compatibility
[PGConf.ASIA 2018]Deep Dive on Amazon Aurora with PostgreSQL Compatibility[PGConf.ASIA 2018]Deep Dive on Amazon Aurora with PostgreSQL Compatibility
[PGConf.ASIA 2018]Deep Dive on Amazon Aurora with PostgreSQL CompatibilityAmazon Web Services Japan
 
20100930 sig startups
20100930 sig startups20100930 sig startups
20100930 sig startupsIchiro Fukuda
 
momentum紹介資料【中文】
momentum紹介資料【中文】momentum紹介資料【中文】
momentum紹介資料【中文】Jim Zhang
 
CAメインフレーム システムリソース削減に貢献する製品について
CAメインフレーム システムリソース削減に貢献する製品についてCAメインフレーム システムリソース削減に貢献する製品について
CAメインフレーム システムリソース削減に貢献する製品についてKaneko Izumi
 

Similar to 20130927 adstir emr (20)

Kubernetes、Flannel、CNIでWindows Container Clusterオーケストレーション
Kubernetes、Flannel、CNIでWindows Container ClusterオーケストレーションKubernetes、Flannel、CNIでWindows Container Clusterオーケストレーション
Kubernetes、Flannel、CNIでWindows Container Clusterオーケストレーション
 
osoljp 2011.08
osoljp 2011.08osoljp 2011.08
osoljp 2011.08
 
Kubernetes on Alibaba Cloud
Kubernetes on Alibaba CloudKubernetes on Alibaba Cloud
Kubernetes on Alibaba Cloud
 
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデート
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデートAmazon Redshift パフォーマンスチューニングテクニックと最新アップデート
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデート
 
S3 を単純ストレージとして 利用する手段の比較
S3 を単純ストレージとして 利用する手段の比較S3 を単純ストレージとして 利用する手段の比較
S3 を単純ストレージとして 利用する手段の比較
 
drecomにおけるwinning the metrics battle
drecomにおけるwinning the metrics battledrecomにおけるwinning the metrics battle
drecomにおけるwinning the metrics battle
 
5億件以上の求人情報を蓄積する汎用クローラエンジンのアーキテクチャと運用
5億件以上の求人情報を蓄積する汎用クローラエンジンのアーキテクチャと運用5億件以上の求人情報を蓄積する汎用クローラエンジンのアーキテクチャと運用
5億件以上の求人情報を蓄積する汎用クローラエンジンのアーキテクチャと運用
 
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11
 
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
 
Amazon EKS上の開発体験を最大化するプレビュー環境の作り方
Amazon EKS上の開発体験を最大化するプレビュー環境の作り方Amazon EKS上の開発体験を最大化するプレビュー環境の作り方
Amazon EKS上の開発体験を最大化するプレビュー環境の作り方
 
LagopusとAzureとIPsecとDPDK
LagopusとAzureとIPsecとDPDKLagopusとAzureとIPsecとDPDK
LagopusとAzureとIPsecとDPDK
 
とある受託ベンダの開発環境
とある受託ベンダの開発環境とある受託ベンダの開発環境
とある受託ベンダの開発環境
 
Rocroにおけるgcp活用事例
Rocroにおけるgcp活用事例Rocroにおけるgcp活用事例
Rocroにおけるgcp活用事例
 
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
 
Flume cassandra real time log processing (日本語)
Flume cassandra real time log processing (日本語)Flume cassandra real time log processing (日本語)
Flume cassandra real time log processing (日本語)
 
[D37]MySQLの真のイノベーションはこれだ!MySQL 5.7と「実験室」 by Ryusuke Kajiyama
[D37]MySQLの真のイノベーションはこれだ!MySQL 5.7と「実験室」 by Ryusuke Kajiyama [D37]MySQLの真のイノベーションはこれだ!MySQL 5.7と「実験室」 by Ryusuke Kajiyama
[D37]MySQLの真のイノベーションはこれだ!MySQL 5.7と「実験室」 by Ryusuke Kajiyama
 
[PGConf.ASIA 2018]Deep Dive on Amazon Aurora with PostgreSQL Compatibility
[PGConf.ASIA 2018]Deep Dive on Amazon Aurora with PostgreSQL Compatibility[PGConf.ASIA 2018]Deep Dive on Amazon Aurora with PostgreSQL Compatibility
[PGConf.ASIA 2018]Deep Dive on Amazon Aurora with PostgreSQL Compatibility
 
20100930 sig startups
20100930 sig startups20100930 sig startups
20100930 sig startups
 
momentum紹介資料【中文】
momentum紹介資料【中文】momentum紹介資料【中文】
momentum紹介資料【中文】
 
CAメインフレーム システムリソース削減に貢献する製品について
CAメインフレーム システムリソース削減に貢献する製品についてCAメインフレーム システムリソース削減に貢献する製品について
CAメインフレーム システムリソース削減に貢献する製品について
 

More from AdStir

AdStir媒体資料
AdStir媒体資料 AdStir媒体資料
AdStir媒体資料 AdStir
 
141215 説明_よくわかるAdStir
141215 説明_よくわかるAdStir141215 説明_よくわかるAdStir
141215 説明_よくわかるAdStirAdStir
 
AdStir for publisher 141126
AdStir for publisher 141126AdStir for publisher 141126
AdStir for publisher 141126AdStir
 
20140828 webインタースティシャル
20140828 webインタースティシャル20140828 webインタースティシャル
20140828 webインタースティシャルAdStir
 
140901 よくわかるAdStir
140901 よくわかるAdStir140901 よくわかるAdStir
140901 よくわかるAdStirAdStir
 
Ad stir en_20140213
Ad stir en_20140213Ad stir en_20140213
Ad stir en_20140213AdStir
 
Ad stir媒体資料 20140204
Ad stir媒体資料 20140204Ad stir媒体資料 20140204
Ad stir媒体資料 20140204AdStir
 
Ad stirシンプルver 20140109
Ad stirシンプルver 20140109Ad stirシンプルver 20140109
Ad stirシンプルver 20140109AdStir
 
Ad stir媒体資料 20131224
Ad stir媒体資料 20131224Ad stir媒体資料 20131224
Ad stir媒体資料 20131224AdStir
 
インタースティシャル広告20140108
インタースティシャル広告20140108インタースティシャル広告20140108
インタースティシャル広告20140108AdStir
 
Adstir english
Adstir englishAdstir english
Adstir englishAdStir
 
インタースティシャル広告Ver2.0
インタースティシャル広告Ver2.0インタースティシャル広告Ver2.0
インタースティシャル広告Ver2.0AdStir
 
Interstitial Ad English ver
Interstitial Ad English verInterstitial Ad English ver
Interstitial Ad English verAdStir
 
AdStir インタースティシャル+アイコンアド
AdStir インタースティシャル+アイコンアドAdStir インタースティシャル+アイコンアド
AdStir インタースティシャル+アイコンアドAdStir
 
Adstir説明資料ver3.6(2012年11月8日)
Adstir説明資料ver3.6(2012年11月8日)Adstir説明資料ver3.6(2012年11月8日)
Adstir説明資料ver3.6(2012年11月8日)AdStir
 
Ad stir baasvol.1.1.
Ad stir baasvol.1.1.Ad stir baasvol.1.1.
Ad stir baasvol.1.1.AdStir
 
Adstir説明資料ver3.3(2012年10月16日)
Adstir説明資料ver3.3(2012年10月16日)Adstir説明資料ver3.3(2012年10月16日)
Adstir説明資料ver3.3(2012年10月16日)AdStir
 
Adstir説明資料ver3.2(2012年9月5日)
Adstir説明資料ver3.2(2012年9月5日)Adstir説明資料ver3.2(2012年9月5日)
Adstir説明資料ver3.2(2012年9月5日)AdStir
 
Adstir説明資料ver3(2012年6月27日)
Adstir説明資料ver3(2012年6月27日)Adstir説明資料ver3(2012年6月27日)
Adstir説明資料ver3(2012年6月27日)AdStir
 

More from AdStir (20)

AdStir媒体資料
AdStir媒体資料 AdStir媒体資料
AdStir媒体資料
 
141215 説明_よくわかるAdStir
141215 説明_よくわかるAdStir141215 説明_よくわかるAdStir
141215 説明_よくわかるAdStir
 
AdStir for publisher 141126
AdStir for publisher 141126AdStir for publisher 141126
AdStir for publisher 141126
 
20140828 webインタースティシャル
20140828 webインタースティシャル20140828 webインタースティシャル
20140828 webインタースティシャル
 
140901 よくわかるAdStir
140901 よくわかるAdStir140901 よくわかるAdStir
140901 よくわかるAdStir
 
Ad stir en_20140213
Ad stir en_20140213Ad stir en_20140213
Ad stir en_20140213
 
Ad stir媒体資料 20140204
Ad stir媒体資料 20140204Ad stir媒体資料 20140204
Ad stir媒体資料 20140204
 
Ad stirシンプルver 20140109
Ad stirシンプルver 20140109Ad stirシンプルver 20140109
Ad stirシンプルver 20140109
 
Ad stir媒体資料 20131224
Ad stir媒体資料 20131224Ad stir媒体資料 20131224
Ad stir媒体資料 20131224
 
インタースティシャル広告20140108
インタースティシャル広告20140108インタースティシャル広告20140108
インタースティシャル広告20140108
 
Adstir english
Adstir englishAdstir english
Adstir english
 
インタースティシャル広告Ver2.0
インタースティシャル広告Ver2.0インタースティシャル広告Ver2.0
インタースティシャル広告Ver2.0
 
Interstitial Ad English ver
Interstitial Ad English verInterstitial Ad English ver
Interstitial Ad English ver
 
AdStir インタースティシャル+アイコンアド
AdStir インタースティシャル+アイコンアドAdStir インタースティシャル+アイコンアド
AdStir インタースティシャル+アイコンアド
 
Adstir説明資料ver3.6(2012年11月8日)
Adstir説明資料ver3.6(2012年11月8日)Adstir説明資料ver3.6(2012年11月8日)
Adstir説明資料ver3.6(2012年11月8日)
 
Ad stir baasvol.1.1.
Ad stir baasvol.1.1.Ad stir baasvol.1.1.
Ad stir baasvol.1.1.
 
Adstir説明資料ver3.3(2012年10月16日)
Adstir説明資料ver3.3(2012年10月16日)Adstir説明資料ver3.3(2012年10月16日)
Adstir説明資料ver3.3(2012年10月16日)
 
1imps
1imps1imps
1imps
 
Adstir説明資料ver3.2(2012年9月5日)
Adstir説明資料ver3.2(2012年9月5日)Adstir説明資料ver3.2(2012年9月5日)
Adstir説明資料ver3.2(2012年9月5日)
 
Adstir説明資料ver3(2012年6月27日)
Adstir説明資料ver3(2012年6月27日)Adstir説明資料ver3(2012年6月27日)
Adstir説明資料ver3(2012年6月27日)
 

Recently uploaded

[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 

Recently uploaded (9)

[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 

20130927 adstir emr

  • 1. Copyright © UNITED, Inc. All Rights Reserved.Copyright © UNITED, Inc. All Rights Reserved. AdStir SSP(RTB)を支える集計インフラの変遷 1 2013.09.27
  • 2. Copyright © UNITED, Inc. All Rights Reserved. 自己紹介 • @fukata (github: fukata) • ログ周り, バッチ系 • Fluentd, EMR • Perl, Ruby, Go • 食べ歩き, 写真 2
  • 3. Copyright © UNITED, Inc. All Rights Reserved. アジェンダ • UNTIED, inc • AdStir • 集計インフラの変遷 • TODO 3
  • 4. Copyright © UNITED, Inc. All Rights Reserved. UNITED, inc. 4
  • 5. Copyright © UNITED, Inc. All Rights Reserved. CocoPPa 5
  • 6. Copyright © UNITED, Inc. All Rights Reserved. AdStir 6
  • 7. Copyright © UNITED, Inc. All Rights Reserved. SSP 7 自社広告 AdStir公認アドネットワーク 他社アドネットワーク 配分比率(%)に応じて抽選 RTB 自社広告 RTB 公認 在庫切れの場合, 再抽選 他社 Browser 他アドネットワークAdStir
  • 8. Copyright © UNITED, Inc. All Rights Reserved. RTB 8 AdStir DSPs 50ms DSP A DSP B DSP C オークション bid bid bid bid Browser
  • 9. Copyright © UNITED, Inc. All Rights Reserved. ログ • 1,000,000,000 レコード / 日 • 800 GB(非圧縮) / 日 9
  • 10. Copyright © UNITED, Inc. All Rights Reserved. 集計インフラ(2011) 10
  • 11. Copyright © UNITED, Inc. All Rights Reserved. 集計インフラ(2011) 11 rsync perlスクリプトで集計 AD (syslog) AD (syslog) Batch mysql
  • 12. Copyright © UNITED, Inc. All Rights Reserved. 問題点 1 • ログファイルが日別 • ログファイルが単一サーバに集中 • rsyncがこけた時のリカバリーが手動 • 集計がスケールしにくい・・・ 12
  • 13. Copyright © UNITED, Inc. All Rights Reserved. 問題点 2 • 物理サーバ • 急なリクエスト増加に対応できない • 一度増やすと簡単にサーバ減らせない • 回線使用料がランニングコストの1/3 13
  • 14. Copyright © UNITED, Inc. All Rights Reserved. 集計インフラ(2013.04) 14
  • 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. Copyright © UNITED, Inc. All Rights Reserved. 問題点 1 • ログファイルが日別 => 時間別に変更 • ログファイルが単一サーバに集中 • rsyncがこけた時のリカバリーが手動 => fluentdで解決! • 集計がスケールしにくい・・・ 16
  • 17. Copyright © UNITED, Inc. All Rights Reserved. 問題点 2 • 物理サーバ => EC2 • 急なリクエスト増加に対応できない => 5分程度で追加・投入可能 • 一度増やすと簡単にサーバ減らせない => インスタンスをストップするだけ • 回線使用料がランニングコストの1/3 => 使った分だけ(従来の1/5くらい) 17
  • 18. Copyright © UNITED, Inc. All Rights Reserved. 集計インフラ(現在) 18
  • 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. Copyright © UNITED, Inc. All Rights Reserved. 問題点 • ログファイルが単一サーバに集中 => S3にのみアップすることで解決 • 集計がスケールしにくい・・・ => EMR!! 20
  • 21. Copyright © UNITED, Inc. All Rights Reserved. EMR • すぐに使い始められる • クラスタ規模も簡単に変更できる • クラスタのメンテコスト削減 • 1日以上かかっていた集計が2時間弱で 終わるようになった 21
  • 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. 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. 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. 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. Copyright © UNITED, Inc. All Rights Reserved. elastic-mapreduceコマンド • 結構色んな事が出来る • オプションが大量にある • Ruby 1.8系までしか対応してない 26
  • 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. 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. Copyright © UNITED, Inc. All Rights Reserved. TODO 29
  • 30. Copyright © UNITED, Inc. All Rights Reserved. TODO • hive • streamingでmapper/reducerそれぞれを実装するのが怠い • アドホックなクエリを気軽に実行できる • ログデータの中間処理 • 検証では4倍ほど速くなった • job監視・可視化 • ステータス、実行時間 等 30
  • 31. Copyright © UNITED, Inc. All Rights Reserved. Thank you 31
  • 32. Copyright © UNITED, Inc. All Rights Reserved. Recruit • http://united.jp/recruit/ • SSP, RTB配信エンジン, 集計インフラを一 緒に作りませんか?(広告に興味なく ても大丈夫です) • go書きたい人 32