AWS Black Belt Tech Webinar 2015
Amazon Kinesis
次回のWebinarは、下記よりご確認ください。
http://aws.amazon.com/jp/about-aws/events/#webinar
★AWS Black Belt Tech Webinarとは
AWSのソリューションアーキテクト、TechメンバがAWSのプロダクト/ソリューションを深堀りして解説し、参加されている皆さまからの質問にお答えする無料のWebinar(Webセミナー)です。
毎週水曜日(祝日などを除く)、日本時間の18:00から約1時間にわたってお送りしています。
30. Kinesis Client Library (KCL)
Client library for fault-tolerant, at least-once, Continuous
Processing
• Shardと同じ数のWorker
• Workerを均等にロードバランシング
• 障害感知と新しいWorkerの立ち上げ
• シャードの数に応じてworkerが動作する
• AutoScalingでエラスティック
• チェックポインティングとAt least once処理
これらの煩雑な処理を意識することなく
ビジネスロジックに集中することができる。
30
31. Sample RecordProcessor
public class SampleRecordProcessor implements IRecordProcessor {
@Override
public void initialize(String shardId) {
LOG.info("Initializing record processor for shard: " + shardId);
// initialize to start processing records.
initializeLocalState(shardId);
}
@Override
public void processRecords(List<Record> records, IRecordProcessorCheckpointer checkpointer) {
LOG.info("Processing " + records.size() + " records for kinesisShardId " + kinesisShardId);
// Process records and perform all exception handling.
processRecordsWithRetries(records);
// Checkpoint once every checkpoint interval.
if (System.currentTimeMillis() > nextCheckpointTimeInMillis) {
checkpoint(checkpointer);
nextCheckpointTimeInMillis = System.currentTimeMillis() + CHECKPOINT_INTERVAL_MILLIS;
}
}
}
31
32. Kinesis Client Libraryの動き
Stream
Shard-0
Shard-1
Kinesis
アプリケーション
(KCL)
ワーカー シーケンス番号
Instance A 12345
Instance A 98765
Data
Record
(12345)
Data
Record
(24680)
Data
Record
(98765)
DynamoDB
Instance A
1. Kinesis Client LibraryがShardからData Recordを取得
2. 設定された間隔でシーケンス番号をそのワーカーのIDをキーにした
DynamoDBのテーブルに格納
3. 1つのアプリが複数Shardからデータを取得し処理を実行
(*)実際のKey, Attribute名は異なります。
32
34. Kinesis Client Libraryの動き
Stream
Shard-0
Shard-1
Kinesis
アプリケーション
(KCL)
ワーカー シーケンス番号
Instance A
↓
Instance B
12345
Instance B 98765
Data
Record
(12345)
Data
Record
(24680)
Data
Record
(98765)
DynamoDB
Instance A
Kinesis
アプリケーション
(KCL)
Instance B
Instance Aがデータ取得されない状況を検知し、Instance Bが、DynamoDBに
格納されているシーケンス番号からデータ取得を行う
(*)実際のKey, Attribute名は異なります。
34
35. Kinesis Client Libraryの動き–拡張性
Stream
Shard-0
Kinesis
アプリケーション
(KCL)
Shard ワーカー シーケンス
番号
Shard-0 Instance A 12345
Shard-1 Instance A 98765
Data
Record
(12345)
Data
Record
(24680)
DynamoDB
Instance A
Shard-1を増やしたことを検知し、データ取得を開始し、Shard-1のチェックポ
イント情報をDynamoDBに追加
Shard-1
Data
Record
(98765)
New
(*)実際のKey, Attribute名は異なります。
35
95. DataXu様 ( Digital AdTech )
• ペタバイトスケールで、毎秒120万リクエスト
• データはビッドの確認情報, 詐欺行為レコードなど
• 継続的オフライン学習、リアルタイム予測継続的にアルゴリズムを改善
• 複数のプロセシングフレームワーク (The right tool for the right job)
• すべてのデータはS3に保存
95
http://www.slideshare.net/AmazonWebServices/bdt306-missioncritical-stream-processing-with-
amazon-emr-and-amazon-kinesis-aws-reinvent-2014
リアルタイムビディングデータのパイプラインとデータ処理システムを構築
96. Amazon S3
Amazon
S3
Spark SQL
JDBC Server
Dashboard
Amazon
Redshift
Consumer
Amazon
EMR
Consumer
Game DB
Game
Servers
Kinesis
DynamoDB
DSV
JSON
• イベントのサイズは1KB
• 毎日5億のイベント
• 毎日5GBのデータ(ピーク1TB)
GREE International様
96
http://www.slideshare.net/AmazonWebServices/gam301-realtime-game-analytics-with-amazon-kinesis-amazon-redshift-
and-amazon-dynamodb-aws-reinvent-2014
ゲームサーバ、モバイルデバイス及びアドネットワークからのデータ収集・分析基盤を構
築。データ保存、ニアリアルタイム集計、分析機能を実現