Big DataとContainerとStream - AWSでのクラスタ構成とストリーム処理 -

0
-1

Published on

JAWS DAYS 2016 で発表した資料となります

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
0
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Big DataとContainerとStream - AWSでのクラスタ構成とストリーム処理 -

  1. 1. 1 Big DataとContainerとStream - AWSでのクラスタ構成とストリーム処理 - JAWS DAYS 2016, Mar 12 Ryosuke Iwanaga Solutions Architect, Amazon Web Services Japan
  2. 2. 2 Agenda • Stream processing • What is Amazon Kinesis? • Amazon Kinesis Architecture with Containers
  3. 3. 3 Key takeaways • ストリーム処理の基礎 • Amazon Kinesisの概要 • Amazon Kinesisと他サービスの組み合わせ方
  4. 4. 4 Stream processing
  5. 5. 5 Stream • Sequence of events/records/data • Features – High throughput/volume – Continuous ingestion • Use cases – Log/event collection – IoT (sensor data, image, etc.) Ex. 1 KB * 10K record/s * 365 days = 300 TB / year Stream => Big Data
  6. 6. 6 Stream processing • Event processing – Process each event one by one • Graph for distributed event processing – Ex. Apache Storm • Micro-batch processing – Process a small amount of events in a batch • Just like a sequence of batch processing – Ex. Spark Streaming
  7. 7. 7 Example: Sliding window • Sliding window – Treat events as a window • Ex. 30 seconds window – Slide the window • Ex. Every 20 seconds • Use cases – Count last 1 min, every 10 sec, alert abnormality http://spark.apache.org/docs/latest/streaming-programming-guide.html • Window length: 3 • The duration of the window • Sliding interval: 2 • The interval at which the window operation is performed
  8. 8. 8 Key factors for Stream processing • Isolate ingestion from processing • Durable storage • Elastic compute resource • Reasonable cost Amazon Kinesis Container
  9. 9. 9 What is Amazon Kinesis?
  10. 10. Amazon Kinesis Streams カスタムアプリを自身 で構築して ストリーミングデータ を処理・分析する Amazon Kinesis Firehose 簡単に大規模の ストリーミングデータ をAmazon S3と Redshiftにロードする Amazon Kinesis Analytics SQLクエリを使って 簡単にストリーミング データを分析する Amazon Kinesis: ストリーミングデータを簡単に扱う ストリームを捕まえ、転送し、処理することを簡単にするAWSサービス 2013/12 2015/10 2015/10 Pre-announce
  11. 11. Amazon Kinesis Streams 自身でストリーミングアプリケーションを構築できる 簡単な管理: 新しいストリームを作り、あなたのデータスループットと規模に 合った必要なキャパシティとパーティションを設定するだけ リアルタイムアプリを構築: Kinesis Client Libray, Apache Spark/Storm, AWS Lambda等々を使って、ストリーミングデータ上のレコードをカスタム処理 する 低コスト: どんな規模のワークロードでもコスト効率が良い クリックストリームデータ をKinesis Streamsに送信 Kinesis Streamsがクリッ クストリームデータを保存し、 処理のために提供 Kinesis Client Libraryベースの カスタムアプリケーションによって、 リアルタイムのコンテンツレコメンド作成 読者はパーソナライズされた コンテンツの推薦を受けられる
  12. 12. 12 Amazon Kinesis Streams: Architecture • 1 Shardのキャパシティ – Put: 1K rec/s, 1 MB/s – Get: 5 TPS, 2 MB/s – スケールイン/アウトが可能 • いつでも、どの場所からで もAPIで読み出し可能 – 1つのStreamに対して複数 の処理を行える k1 v1 k1 v2 k2 v1 k3 v1 AZ AZ AZ StreamAWSAPIEndpoint Shard 1 Shard 2 Shard N k1 v1 k1 v2 k2 v1 k3 v1 AWSAPIEndpoint 保持期間は24時間〜7日間で設定可能 k1 v1 k1 v2 k2 v1 k3 v1 Partition Keyを指定 DataはMax 1MB
  13. 13. 13 データ入力 & ストリーム処理 HTTP Post AWS SDK LOG4J Flume Fluentd Get* APIs Kinesis Client Library + Connector Library Apache Storm Amazon Elastic MapReduce データ入力 データ処理 AWS Mobile SDK Apache Spark Streaming
  14. 14. Amazon Kinesis Firehose 大量のストリームデータをAmazon S3とAmazon Redshiftへ 管理不要: ストリームデータを捉えS3とRedshift、そして他の到達点へ一切アプリ ケーションを書くことなく、インフラも管理することなく転送できる データストアへの直接の連携: 簡単な設定だけで、ストリームデータをバッチ処 理し、圧縮し、そして暗号化してデータの到達点へ最短60秒で転送できる 継ぎ目のない弾力性: データのスループットに応じて、何の影響もなく自然 にスケールできる ストリームデータを捉え Firehoseに送信する Firehoseはストリームデータを 継続的にS3とRedshiftに転送する ストリームデータを 好きなBIツールで分析する
  15. 15. 15 Amazon Kinesis Firehose: Demo ~ 60 sec AWS JavaScript SDK Amazon Cognito AWS IAM Amazon Kinesis Firehose Amazon S3 Amazon Redshift AWS Lambda
  16. 16. 16 Fluent plugin for Amazon Kinesis • v1.0.0開発中(今RC) • 3つのoutputサポート – Kinesis Streams用 • kinesis_streams • kinesis_producer – Kinesis Firehose用 • kinesis_firehose • GitHub/rubygemsで提供 – Maintainerは@riywo • リリースに向けて、絶賛 フィードバック募集中! – Issue下さい! https://github.com/awslabs/aws-fluent-plugin-kinesis
  17. 17. Amazon Kinesis Analytics データストリームを標準的なSQLで継続的に分析する ストリームにSQLを適応: 簡単にデータストリームを接続でき、既存の SQLのスキルを適応できる リアルタイムアプリケーションを構築: ストリームのビッグデータに対 して、1秒以下のレイテンシの継続的な処理を実行 弾力的にスケール: データのスループットに合わせて、何の影響もなく 弾力的にスケールする アナウンスのみ! Kinesisのストリームや Firehoseのデリバリストリームを 接続する データストリームに対して 標準的なSQLを実行する Kinesis Analyticsは処理したデータを分析 ツールに送信できるので、アラートを作成して リアルタイムに反応することができる
  18. 18. 18 Amazon Kinesis Architecture w/Containers
  19. 19. 19 What is "Container"? • OS-level isolation • Portability • Major container engine on AWS – Docker Engine – JVM – AWS Lambda (Node.js/Java/Python)
  20. 20. 20 Why is "Container" important for Big Data? • Scalability – Easy to scale in/out • Cost efficiency – High utilization by multi-tenancy • Speed of innovation – Fine-grained architecture / Good abstraction
  21. 21. 21 Stream processing with Docker container • Kinesis Client Library – Shard treatment – Failure management – Multi language • Runs on Amazon ECS – Resource Management – Keep task running Amazon ECS Amazon Kinesis Streams
  22. 22. 22 Stream processing with JVM container • Spark Streaming – Micro-batch – w/Spark SQL, ML • Runs on Amazon EMR – YARN – Dynamic Allocation DStream RDD@T1 RDD@T2 Amazon Kinesis Streams Amazon EMR
  23. 23. 23 Stream processing with AWS Lambda • Lambda function – Bring your own code – Invoke per shard • Runs on AWS Lambda – Server-less Architecture – Scale as you want Amazon Kinesis Streams AWS Lambda
  24. 24. 24 More Server-less Stream Architecture • Amazon Kinesis Firehose – Deliver stream to storage • Amazon Kinesis Analytics – Run SQL on stream data • Without any server Amazon Kinesis Analytics Amazon Kinesis Firehose
  25. 25. 25 Summary • Amazon Kinesisで安心できるストリーム処理を – Amazon Kinesis Streamsと、Amazon ECS, Amazon EMR, AWS Lambda等のコンテナ技術で、自由なストリーム処理 – Amazon Kinesis Firehose, Amazon Kinesis Analyticsで、よくあ るユースケースをサーバレスに実現 • 使い分けは場合によりけり – 迷ったら、ぜひAWS JapanのSAまでご相談を! – → 今日もMeet the SAと称して、終日ブース待機してます!
  26. 26. 26

×