Submit Search
Upload
Data Stream Processing and Analysis on AWS #awscasual
•
7 likes
•
12,197 views
Kenta Suzuki
Follow
AWS Casual Talks #2 での資料です。 http://www.zusaar.com/event/3817003
Read less
Read more
Engineering
Report
Share
Report
Share
1 of 38
Download now
Download to read offline
Recommended
CloudTrail でログとれ〜る
CloudTrail でログとれ〜る
Hokuto Hoshi
AWS Casual2 LT
AWS Casual2 LT
Tomohiro Ikeda
20140418 aws-casual-network
20140418 aws-casual-network
Yasuhiro Araki, Ph.D
5分でできる ebfly
5分でできる ebfly
Kazuyuki Honda
Amazon Kinesis: Real-time Streaming Big data Processing Applications (BDT311)...
Amazon Kinesis: Real-time Streaming Big data Processing Applications (BDT311)...
Amazon Web Services
Spot Instance + Spark + MLlibで実現する簡単低コスト機械学習
Spot Instance + Spark + MLlibで実現する簡単低コスト機械学習
Katsushi Yamashita
20140329 modern logging and data analysis pattern on .NET
20140329 modern logging and data analysis pattern on .NET
Takayoshi Tanaka
Kinesis Analyticsの適用できない用途と、Kinesis Firehoseの苦労話
Kinesis Analyticsの適用できない用途と、Kinesis Firehoseの苦労話
Sotaro Kimura
Recommended
CloudTrail でログとれ〜る
CloudTrail でログとれ〜る
Hokuto Hoshi
AWS Casual2 LT
AWS Casual2 LT
Tomohiro Ikeda
20140418 aws-casual-network
20140418 aws-casual-network
Yasuhiro Araki, Ph.D
5分でできる ebfly
5分でできる ebfly
Kazuyuki Honda
Amazon Kinesis: Real-time Streaming Big data Processing Applications (BDT311)...
Amazon Kinesis: Real-time Streaming Big data Processing Applications (BDT311)...
Amazon Web Services
Spot Instance + Spark + MLlibで実現する簡単低コスト機械学習
Spot Instance + Spark + MLlibで実現する簡単低コスト機械学習
Katsushi Yamashita
20140329 modern logging and data analysis pattern on .NET
20140329 modern logging and data analysis pattern on .NET
Takayoshi Tanaka
Kinesis Analyticsの適用できない用途と、Kinesis Firehoseの苦労話
Kinesis Analyticsの適用できない用途と、Kinesis Firehoseの苦労話
Sotaro Kimura
AWS SDK for Go in #jawsmeguro
AWS SDK for Go in #jawsmeguro
Kenta Suzuki
Data Engineering at VOYAGE GROUP #jawsdays
Data Engineering at VOYAGE GROUP #jawsdays
Kenta Suzuki
fluentd設定行数とシステム複雑性のカジュアルな話
fluentd設定行数とシステム複雑性のカジュアルな話
Kenta Suzuki
サービス改善はログデータ分析から
サービス改善はログデータ分析から
Kenta Suzuki
DMPの仕組み
DMPの仕組み
Kenta Suzuki
web広告輪講 #5
web広告輪講 #5
Kenta Suzuki
Head First Ad Technology and DMP
Head First Ad Technology and DMP
Kenta Suzuki
データとは何か
データとは何か
Kenta Suzuki
Jenkinsとhadoopを利用した継続的データ解析環境の構築
Jenkinsとhadoopを利用した継続的データ解析環境の構築
Kenta Suzuki
More Related Content
More from Kenta Suzuki
AWS SDK for Go in #jawsmeguro
AWS SDK for Go in #jawsmeguro
Kenta Suzuki
Data Engineering at VOYAGE GROUP #jawsdays
Data Engineering at VOYAGE GROUP #jawsdays
Kenta Suzuki
fluentd設定行数とシステム複雑性のカジュアルな話
fluentd設定行数とシステム複雑性のカジュアルな話
Kenta Suzuki
サービス改善はログデータ分析から
サービス改善はログデータ分析から
Kenta Suzuki
DMPの仕組み
DMPの仕組み
Kenta Suzuki
web広告輪講 #5
web広告輪講 #5
Kenta Suzuki
Head First Ad Technology and DMP
Head First Ad Technology and DMP
Kenta Suzuki
データとは何か
データとは何か
Kenta Suzuki
Jenkinsとhadoopを利用した継続的データ解析環境の構築
Jenkinsとhadoopを利用した継続的データ解析環境の構築
Kenta Suzuki
More from Kenta Suzuki
(9)
AWS SDK for Go in #jawsmeguro
AWS SDK for Go in #jawsmeguro
Data Engineering at VOYAGE GROUP #jawsdays
Data Engineering at VOYAGE GROUP #jawsdays
fluentd設定行数とシステム複雑性のカジュアルな話
fluentd設定行数とシステム複雑性のカジュアルな話
サービス改善はログデータ分析から
サービス改善はログデータ分析から
DMPの仕組み
DMPの仕組み
web広告輪講 #5
web広告輪講 #5
Head First Ad Technology and DMP
Head First Ad Technology and DMP
データとは何か
データとは何か
Jenkinsとhadoopを利用した継続的データ解析環境の構築
Jenkinsとhadoopを利用した継続的データ解析環境の構築
Data Stream Processing and Analysis on AWS #awscasual
1.
Data Stream Processing
and Analysis on AWS: Fluentd, Elasticsearch, DynamoDB, EMR and Amazon Kinesis AWS Casual Talks #2 @suzu_v
2.
すずけん, @suzu_v VOYAGE GROUPで働いてます その中のadingoという会社でR&Dをしてます http://suzuken.hatenablog.jp/
3.
4.
アンケート
5.
Amazon Kinesis ユーザの方?
6.
Fluentd使っている方?
7.
Elasticsearchユーザの方?
8.
DynamoDB使ってる方?
9.
EMR使ってる方?
10.
今日はログの解析基盤のアーキテクチャと Kinesisの検証をしている話をします
11.
Data Sources App.4 [Machine Learning] AWSEndpoint App.1 [Aggregate & De-Duplicate] Data Sources Data Sources Data Sources App.2 [Metric Extraction] S3 DynamoDB Redshift App.3 [Sliding Window Analysis] Data Sources Availability Zone Shard 1 Shard
2 Shard N Availability Zone Availability Zone Amazon Kinesis Managed Service for Real-Time Processing of Big Data http://www.slideshare.net/AmazonWebServices/amazon-kinesis-realtime-streaming-big-data- processing-applications-bdt311-aws-reinvent-2013
12.
Kinesis Architecture log log log log log log log log log log log log Amazon Kinesis Kinesis Application stream Data Record shard Partition
key DataStore
13.
Kinesis Architecture log log log log log log log log log log log log Amazon Kinesis Kinesis Application stream Data Record shard Partition
key DataStore site_id 2014/04/18 site_id: 1 user_id: 1 count by site 1~100 count by site 101~200 count by site 201~300 top ranking
14.
Kinesis Architecture log log log log log log log log log log log log Amazon Kinesis Kinesis Application stream Data Record shard Partition
key DataStore user_id 2014/04/18 item_id: 1 user_id: 1 coefficient: item visited by user 1-10000 update matrix (in near real time) coefficient: item visited by user 10001-20000 coefficient: item visited by user 20001-30000
15.
Out System
16.
システム概要 広告ログを分析するための基盤 アドホックな分析&定常分析 ターゲティングにも使う
17.
カジュアルなシステム要件 複数サービスのログをひたすら取り込む。 過去ログをひたすら取り込み、快適に分析できる ようにする。hot / cold
dataの分析を両立する。 ターゲティングはベストエフォート。
18.
2012 mid.ELB EC2 EC2 EC2 EC2 request S3
MongoDB Cluster (EC2) EMR ELB EC2 EC2 EC2 EC2 http api crontab hourly daily php + apache php + apache
19.
Arch. #1 /
2012 mid. Cons not real-time MongoDBのwriteによる負荷 が高い MongoDBの集計処理が重い MapReduceジョブを回さな いと分析ができない Pros MongoDBの柔軟性 データの受け入れが 安定
20.
2014 earlyELB EC2 EC2 EC2 EC2 request EC2 S3 DynamoDB EMR
ELB EC2 EC2 EC2 EC2 http api Elastic search Growth Forecast fluentd fluentd (aggregator) exec_filter out_elasticsearch out_dynamodb servlet (scala) dynamic-dynamo
21.
ある日のトラフィックパターンと自動スケーリングの様子 sebdah/dynamic-dynamodb https://github.com/sebdah/dynamic-dynamodb
22.
Arch. #2 /
2014 early Cons Fluentdが便利すぎるがために、aggregatorにい ろいろやらせすぎてる。 Fluentdのバッファが詰まって死ぬ、とか ある困る。 preノードを追加してストリームを逃がす こともしているが、fluentの設定が複雑化 する ストリーム処理をより柔軟に、多様に、疎結合 に扱いたい Elasticsearchに長期間の大量データを集計させ るとそれなりにパワーが必要 Pros Elasticsearch + Kibanaにより、エンジニア以 外のメンバーもhotなデータのドリルダウン を行えるように DynamoDB導入によりwrite / readともに安定 dynamic-dynamodbを採用。throughput を自動調節するように。 EMR上のHiveから、s3にあるログとDynamoDB にある分析済みデータを組み合わせたクエ リが可能に 準リアルタイムなターゲティングが可能に
23.
ここから検証中の話
24.
Next ?ELB EC2 EC2 EC2 EC2 request EC2 S3 DynamoDB EMR
ELB EC2 EC2 EC2 EC2 http api Elastic search Growth Forecast Amazon Kinesis Kinesis App.
25.
Amazon Kinesisの検証項目 求めているスループットはでるか? どれくらいの負荷で書き込めるか? 書き込み失敗時にどのような挙動になるか?ハン ドリングできるか? KCL(Kinesis Client
Library)での開発は楽か?
26.
ざっくりとした使用感 - producer aggregatorを用意してwriteするのではなく、logの発生源から直接書くほうが throughputを出しやすい。ただし、1レコードずつ書き込まなければならないた め、fluentdのout
pluginではthroughputが出しづらい。 1 shard 1000 put request / sec. の制限がある。大きなオブジェクトを書き込まない 限り、byte制限よりこちらに引っかかるケースのほうが多い。とはいえ、シャー ドの追加は簡単なので、大きな問題にはならない。緩和申請は計画的に。 書き込み時の負荷を意識する必要がないので楽。とりあえず入れておけば、 Consumer側でよしなにできる。 Kinesis内に24時間残ってくれるのは便利。ただし、Kinesisへの書き込み失敗時の ハンドリングをする必要はある。
27.
ざっくりとした使用感 - consumer DynamoDBが活躍する。Kinesis
ApplicationからDynamoDBへの書き込みは楽。Scalingも問題な い。 readは1 shard 5 transaction / sec.の制限がある。なので1transactionである程度まとめてデータ を取得する作りにする必要がある。そもそも足りないならshardを増やす。 失敗時のretryのため、Kinesis Applicationの各Workerで各Shardをどこまで処理したのかを Checkpointとして記録しておく必要がある。KCL(Kinesis Client Library)使うとこのへんはよしな にDynamoDBで管理するようにしてくれる。 EMRからもConnectorがあるので簡単に扱える。 EMR上のSpark Streamingから扱うのは手軽で良い。EMRでSparkクラスタを立てられるので、 aliveにしてストリームに対してwindowクエリを流し続けるのは手軽なユースケースになりそ う。
28.
Kinesisへの移行で発生する作業 fluentdのexec_filterとかexecとかでやっていたことをKinesis Applicationに置き換える必要がある パーティションキーの考慮、consumeが失敗した場合のケア fluentdでいうaggregatorノードを作るのではなくて、ログを出す 各サーバから直接Kinesisに転送するような作りにしたほうが良さ そう 1行のログごとの書き込みなので、1ノードからのKinesisへの 書き込みスループットが現段階ではあまりでない。
29.
Kinesis, こうなったら良い Kinesisのメトリクスも1min.ごとに見たい DynamoDB同様、batchWriteが欲しい ap-northeast-1! 東京リージョン!
30.
カジュアルなまとめ Amazon Kinesisもっと使いましょう 東京リージョン待ってます
31.
参考資料
32.
Kinesis関連 Amazon Web Services
ブログ: 【AWS発表】KinesisとElastic MapReduceを使ってストリーミングデータ を処理する http://aws.typepad.com/aws_japan/2014/03/process-streaming-data-with-kinesis-and-elastic- mapreduce.html Amazon Kinesis: Real-time Streaming Big data Processing Applications (BDT311) | AWS re:Invent 2013 http://www.slideshare.net/AmazonWebServices/amazon-kinesis-realtime-streaming-big-data- processing-applications-bdt311-aws-reinvent-2013 https://www.youtube.com/watch?v=AXAaCG2QUkE re:Invent 2013でのKinesisの紹介スライド及びビデオです。KeynoteでのKinesisのデモに利用さ れていたTwitterのhashtagをcountするデモの構築方法についてまとまっています。 ShardのマネジメントをDynamoDBを利用して行っているところなど、わかりやすく説明され ています。
33.
Kinesis関連 Developing Record Consumer
Applications - Amazon Kinesis http://docs.aws.amazon.com/kinesis/latest/dev/kinesis-record-processor- app.html Kinesis Client Libraryを使ったConsumerの作成方法についてまとまっていま す Tutorial: Analyzing Amazon Kinesis Streams with Amazon EMR and Hive - Amazon Elastic MapReduce http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/query- kinesis.html Kinesis StreamをEMR上のHiveで取り扱う方法について説明されています。
34.
Log4jAppender for Kinesis Download
Log4J Appender for Amazon Kinesis Sample Application, Sample Credentials File, and Sample Log File - Amazon Elastic MapReduce http://docs.aws.amazon.com/ElasticMapReduce/ latest/DeveloperGuide/kinesis-pig-publisher.html てっとりばやくKinesisに書き込みたいならこれが いいです
35.
Kinesis with EMR Spark
Streaming http://www.cs.berkeley.edu/~marmbrus/sparkdocs/_site/streaming- programming-guide.html cold dataとhot dataを組み合わせてwindowしたり 例)特定クライアントのキャンペーンにおける5分毎のクリック数 Run Spark and Shark on Amazon Elastic MapReduce : Articles & Tutorials : Amazon Web Services https://aws.amazon.com/articles/Elastic-MapReduce/4926593393724923
36.
credit 扉絵 https://www.flickr.com/photos/ 65220434@N02/13645528234/sizes/l
37.
fluent-plugin-elasticsearch uken/fluent-plugin-elasticsearch https://github.com/uken/fluent-plugin- elasticsearch hostsオプションおすすめ Kibana向けにオプション作れるの便利 chunkサイズはES側の設定と合わせておくと良い
38.
fluent-plugin-kinesis imaifactory/fluent-plugin-kinesis https://github.com/imaifactory/fluent-plugin-kinesis まだrubygemsには上がってない fluentのchunkと、Kinesisのwrite APIの相性が… throughput出すならbatchで書き込めないとつらそ う
Download now