21. Adnetworks
media
Web Sites
SSP
DSP
行動ログ
Amazon Elastic
Load Balancing
行動ログコレクタ(Web) オーディエンスデータ
Web API
… …
EC2 EC2 EC2 EC2 EC2 EC2
Auto scaling Group Auto scaling Group
Amazon Simple Amazon Elastic
オーディエンスデータDB
Storage Service MapReduce
(MongoDB)
(S3) ログ解析バッチ
http://aws.amazon.com/jp/solutions/case-studies/adingo/
27. -- defining table for output daily referer count by pages.
CREATE EXTERNAL TABLE daily_referer_count (
referer string,
referer_count int
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY 't'
STORED AS TEXTFILE
LOCATION 's3n://sample-
bucket/reports/${EVENTDATE}/daily_referer_count_rankin
g’;
例えばアクセスログからリファラを分析する際には
上のようなテーブルを作り、
28. 集計します。
この場合だと、結果はS3に格納されます。
-- aggregation daily count of each referer.
INSERT OVERWRITE TABLE daily_referer_count
SELECT referer, count(*) AS referer_count FROM
access_log WHERE dt="${EVENTDATE}"
GROUP BY referer
DISTRIBUTE BY referer SORT BY referer_count DESC,
referer ASC
LIMIT 100;
39. push
Team mirroring
:release
ビ
ル
ド
パ
イ
プ
ラ
イ
ン
development
:master
EC2
開発環境にはmasterブランチのコードが
自動的にデプロイされます。
この際テストやマイグレーションなども
同時に行われます。
$ fab –f app_fabfile.py development deploy testing migrate
40. push production
…
Team mirroring EC2 EC2 EC2
:release Auto scaling Group
ビ preview
ル
ド
パ
イ
プ EC2
ラ AWS CloudFormation
イ
ン
development
:master
EC2
Servers belonged to certain data domain.
pre環境は都度CloudFormationで立ち上げます。
本番環境にはreleaseブランチのコードをデプロイします。
$ fab –f app_fabfile.py preview deploy migrate
$ fab –f app_fabfile.py production deploy migrate
41. push production
…
Team mirroring EC2 EC2 EC2
:release Auto scaling Group
ビ preview
ル
ド
パ
イ
プ EC2
ラ AWS CloudFormation
イ
ン
development
:master
EC2
Servers belonged to certain data domain.
.jarファイルやhiveプログラムの配置
S3
もし、MapReduceプログラムやHiveクエリであれば、
ビルド後の成果物をS3に自動的に配置します。
$ s3cmd put --recursive /path/to/workspace/* s3://example/hive/
42. push production
…
Team mirroring EC2 EC2 EC2
:release Auto scaling Group
ビ preview
ル
ド
パ
イ
プ EC2
ラ AWS CloudFormation
イ
ン
development
:master
EC2
Servers belonged to certain data domain.
.jarファイルやhiveプログラムの配置
そして実際にジョブを実行します。
S3
ジョブの実行は任意のタイミング
で行うことができます。
ジョブの実行 $ TODAY=`date +%Y/%m/%d`
$ elastic-mapreduce --create –name LogAggregation
--num-instances 10 --instance-type m1.small
--hive-script --arg s3://example/hive/query/1st_step.q
Amazon Elastic
MapReduce
--args -d,EVENTDATE=$TODAY --step-name FirstStep
--hive-script --arg s3://example/hive/query/2nd_step.q
--args -d,EVENTDATE=$TODAY --step-name SecondStep