[AWS re:invent 2013 Report] Amazon Kinesis

1,730 views
1,600 views

Published on

[AWS re:invent 2013 Report] Amazon Kinesis

  1. 1. Amazon Kinesis ストリーミング・データのリアルタイム処理 © 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.
  2. 2. Why Real-Time Processing?
  3. 3. データの飛躍的な増加 ビッグ・データは高速である ZB EB PB GB TB • ITインフラ/アプリからのログ ITインフラのログ、メーター、 監査ログ、変更ログ • Webサイト、モバイル・アプリ、 広告 クリック・ストリーム • センサー・データ 天候、スマート・グリッド • ソーシャル、ユーザーコンテンツ 450MM+ ツィート/日
  4. 4. ビッグ・データのソリューション • ビッグ・データへの一般的なアプローチ – クエリー・エンジン(データ・ウェアハウス、YesSQL、NoSQLデータベース) • 構造化データに対して、クエリーの繰り返し実行 蓄積された「過去」データの処理 • 索引、ディメンションによるクエリー性能の向上 – バッチ・エンジン(Map-Reduce) • 非構造化データに対して、低い頻度でクエリー・解析の実行 • ビッグ・データへのストリーム処理 – コンテンツ(データ・ストリーム)へのリアルタイムな応答 – 比較的にシンプルなデータ処理(集約、フィルター、スライドウィンドウ等) – 他のデータ・ストアへの移動によるデータのライフ・サイクル 「今」流れているデータの処理
  5. 5. Amazon Kinesis – 概要 フルマネージドされたリアルタイム処理 毎時数MBから最大数TBの処理が可能 信頼性の高いストレージ、データ収集、分析を 提供 シャード単位で1,000 write (最大1MB/s), 20 read (最大2MB/s)と言った単位でスループッ トに応じてプロビジョニング サーバーログ、ソーシャルメディアストリーム、マーケット データフィード、ウェブクリックストリーム、M2M等 キャパシティーの削除・追加をダイナミックに 実施可能
  6. 6. Amazon Kinesisの全体像 App.1 Data Sources Availability Zone Data Sources Data Sources Availability Zone S3 App.2 AWS Endpoint Data Sources Availability Zone [Aggregate & De-Duplicate] Stream Shard 1 Shard 2 Shard N [Metric Extraction] DynamoDB App.3 [Sliding Window Analysis] Redshift Data Sources App.4 [Machine Learning]
  7. 7. ストリームの作成 ストリーム名 シャード数 スループットの 自動計算
  8. 8. DEMO sample feed Data Sources AWS Endpoint Availability Zone Availability Zone Availability Zone App.1 Shard 1 Shard 2 Shard N wordcount Redshift
  9. 9. 適用例:ベータ・カスタマー 金融業界 アドテク業界 マーケットや取引所の注文に対する リアルタイム監査ログ メトリックやオンライン広告のKPIの リアルタイムな生成 課題:カスタムビルドなソリュー ションは、維持管理が困難かつス ケールしない 課題:日次ベースのHadoopベースのパイ プライン処理は性能が遅く、維持管理が 困難 Kinesis:全ての注文データを安定的 に取り込み、リアルタイムな監査 アプリを構築 Kinesis:定期的なバッチ処理ではなく、 継続的なリアルタイムのメトリックやレ ポートの生成 Time-to-marketへの柔軟でリアルタイ ムなアプリ提供しつつ、運用コスト を削減 マーケティング予算の最適化のために最 新の分析結果を提供し、クライアントへ の応答を向上
  10. 10. Thank you.
  11. 11. Appendix
  12. 12. 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) { … } }
  13. 13. 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); } } }

×