Upload
amazon-web-services-japan
View
1.328
Download
4
Embed Size (px)
Citation preview
© 2013 Amazon.com, Inc. and its affiliates. All rights reserved. May not be copied, modified, or distributed in whole or in part without the express consent of Amazon.com, Inc.
Amazon Kinesis ストリーミング・データのリアルタイム処理
Why Real-Time Processing?
データの飛躍的な増加 ビッグ・データは高速である
GB TB PB
ZB
EB
• ITインフラ/アプリからのログ
ITインフラのログ、メーター、
監査ログ、変更ログ
• Webサイト、モバイル・アプリ、広告
クリック・ストリーム
• センサー・データ
天候、スマート・グリッド
• ソーシャル、ユーザーコンテンツ
450MM+ ツィート/日
ビッグ・データのソリューション
• ビッグ・データへの一般的なアプローチ – クエリー・エンジン(データ・ウェアハウス、YesSQL、NoSQLデータベース)
• 構造化データに対して、クエリーの繰り返し実行
• 索引、ディメンションによるクエリー性能の向上
– バッチ・エンジン(Map-Reduce)
• 非構造化データに対して、低い頻度でクエリー・解析の実行
• ビッグ・データへのストリーム処理 – コンテンツ(データ・ストリーム)へのリアルタイムな応答
– 比較的にシンプルなデータ処理(集約、フィルター、スライドウィンドウ等)
– 他のデータ・ストアへの移動によるデータのライフ・サイクル
蓄積された「過去」データの処理
「今」流れているデータの処理
Amazon Kinesis – 概要 フルマネージドされたリアルタイム処理
毎時数MBから最大数TBの処理が可能
信頼性の高いストレージ、データ収集、分析を
提供
シャード単位で1,000 write (最大1MB/s),
20 read (最大2MB/s)と言った単位でスループッ
トに応じてプロビジョニング
キャパシティーの削除・追加をダイナミックに
実施可能
サーバーログ、ソーシャルメディアストリーム、マーケット
データフィード、ウェブクリックストリーム、M2M等
Data Sources
App.4
[Machine Learning]
AW
S En
dp
oin
t
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の全体像
Stream
ストリームの作成
ストリーム名
シャード数
スループットの 自動計算
DEMO
AW
S E
nd
po
int App.1
wordcount Data
Sources
Availability
Zone
Shard 1
Shard 2
Shard N
Availability
Zone Availability
Zone
sample feed
Redshift
適用例:ベータ・カスタマー
金融業界 アドテク業界
マーケットや取引所の注文に対するリアルタイム監査ログ
メトリックやオンライン広告のKPIの
リアルタイムな生成
課題:カスタムビルドなソリューションは、維持管理が困難かつスケールしない
課題:日次ベースのHadoopベースのパイプライン処理は性能が遅く、維持管理が困難
Kinesis:全ての注文データを安定的に取り込み、リアルタイムな監査
アプリを構築
Kinesis:定期的なバッチ処理ではなく、継続的なリアルタイムのメトリックやレポートの生成
Time-to-marketへの柔軟でリアルタイムなアプリ提供しつつ、運用コストを削減
マーケティング予算の最適化のために最新の分析結果を提供し、クライアントへの応答を向上
Thank you.
Appendix
Twitter Trends Shard Processing Code
Class TwitterTrendsShardProcessor implements IRecordProcessor {
public TwitterTrendsShardProcessor() { … }
@Override
public void initialize(String shardId) { … }
@Override
public void processRecords(List<Record> records,
IRecordProcessorCheckpointer checkpointer) { … }
@Override
public void shutdown(IRecordProcessorCheckpointer checkpointer,
ShutdownReason reason) { … }
}
Twitter Trends Shard Processing Code Class TwitterTrendsShardProcessor implements IRecordProcessor { private Map<String, AtomicInteger> hashCount = new HashMap<>(); private long tweetsProcessed = 0; @Override public void processRecords(List<Record> records, IRecordProcessorCheckpointer checkpointer) { computeLocalTop10(records); if ((tweetsProcessed++) >= 2000) { emitToDynamoDB(checkpointer); } } }