1
Big DataとContainerとStream
- AWSでのクラスタ構成とストリーム処理 -
JAWS DAYS 2016, Mar 12
Ryosuke Iwanaga
Solutions Architect, Amazon Web Services Japan
2
Agenda
• Stream processing
• What is Amazon Kinesis?
• Amazon Kinesis Architecture with Containers
3
Key takeaways
• ストリーム処理の基礎
• Amazon Kinesisの概要
• Amazon Kinesisと他サービスの組み合わせ方
4
Stream processing
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
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
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
Key factors for Stream processing
• Isolate ingestion from processing
• Durable storage
• Elastic compute resource
• Reasonable cost
Amazon Kinesis
Container
9
What is Amazon Kinesis?
Amazon Kinesis
Streams
カスタムアプリを自身
で構築して
ストリーミングデータ
を処理・分析する
Amazon Kinesis
Firehose
簡単に大規模の
ストリーミングデータ
をAmazon S3と
Redshiftにロードする
Amazon Kinesis
Analytics
SQLクエリを使って
簡単にストリーミング
データを分析する
Amazon Kinesis: ストリーミングデータを簡単に扱う
ストリームを捕まえ、転送し、処理することを簡単にするAWSサービス
2013/12 2015/10 2015/10
Pre-announce
Amazon Kinesis Streams
自身でストリーミングアプリケーションを構築できる
簡単な管理: 新しいストリームを作り、あなたのデータスループットと規模に
合った必要なキャパシティとパーティションを設定するだけ
リアルタイムアプリを構築: Kinesis Client Libray, Apache Spark/Storm,
AWS Lambda等々を使って、ストリーミングデータ上のレコードをカスタム処理
する
低コスト: どんな規模のワークロードでもコスト効率が良い
クリックストリームデータ
をKinesis Streamsに送信
Kinesis Streamsがクリッ
クストリームデータを保存し、
処理のために提供
Kinesis Client Libraryベースの
カスタムアプリケーションによって、
リアルタイムのコンテンツレコメンド作成
読者はパーソナライズされた
コンテンツの推薦を受けられる
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
データ入力 & ストリーム処理
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
Amazon Kinesis Firehose
大量のストリームデータをAmazon S3とAmazon Redshiftへ
管理不要: ストリームデータを捉えS3とRedshift、そして他の到達点へ一切アプリ
ケーションを書くことなく、インフラも管理することなく転送できる
データストアへの直接の連携: 簡単な設定だけで、ストリームデータをバッチ処
理し、圧縮し、そして暗号化してデータの到達点へ最短60秒で転送できる
継ぎ目のない弾力性: データのスループットに応じて、何の影響もなく自然
にスケールできる
ストリームデータを捉え
Firehoseに送信する
Firehoseはストリームデータを
継続的にS3とRedshiftに転送する
ストリームデータを
好きなBIツールで分析する
15
Amazon Kinesis Firehose: Demo
~ 60 sec
AWS JavaScript SDK
Amazon
Cognito
AWS
IAM
Amazon Kinesis
Firehose
Amazon
S3
Amazon
Redshift
AWS
Lambda
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
Amazon Kinesis Analytics
データストリームを標準的なSQLで継続的に分析する
ストリームにSQLを適応: 簡単にデータストリームを接続でき、既存の
SQLのスキルを適応できる
リアルタイムアプリケーションを構築: ストリームのビッグデータに対
して、1秒以下のレイテンシの継続的な処理を実行
弾力的にスケール: データのスループットに合わせて、何の影響もなく
弾力的にスケールする
アナウンスのみ!
Kinesisのストリームや
Firehoseのデリバリストリームを
接続する
データストリームに対して
標準的なSQLを実行する
Kinesis Analyticsは処理したデータを分析
ツールに送信できるので、アラートを作成して
リアルタイムに反応することができる
18
Amazon Kinesis Architecture w/Containers
19
What is "Container"?
• OS-level isolation
• Portability
• Major container engine on AWS
– Docker Engine
– JVM
– AWS Lambda (Node.js/Java/Python)
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
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
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
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
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
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

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

  • 1.
    1 Big DataとContainerとStream - AWSでのクラスタ構成とストリーム処理- JAWS DAYS 2016, Mar 12 Ryosuke Iwanaga Solutions Architect, Amazon Web Services Japan
  • 2.
    2 Agenda • Stream processing •What is Amazon Kinesis? • Amazon Kinesis Architecture with Containers
  • 3.
    3 Key takeaways • ストリーム処理の基礎 •Amazon Kinesisの概要 • Amazon Kinesisと他サービスの組み合わせ方
  • 4.
  • 5.
    5 Stream • Sequence ofevents/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 Stream processing • Eventprocessing – 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 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 Key factors forStream processing • Isolate ingestion from processing • Durable storage • Elastic compute resource • Reasonable cost Amazon Kinesis Container
  • 9.
  • 10.
    Amazon Kinesis Streams カスタムアプリを自身 で構築して ストリーミングデータ を処理・分析する Amazon Kinesis Firehose 簡単に大規模の ストリーミングデータ をAmazonS3と Redshiftにロードする Amazon Kinesis Analytics SQLクエリを使って 簡単にストリーミング データを分析する Amazon Kinesis: ストリーミングデータを簡単に扱う ストリームを捕まえ、転送し、処理することを簡単にするAWSサービス 2013/12 2015/10 2015/10 Pre-announce
  • 11.
    Amazon Kinesis Streams 自身でストリーミングアプリケーションを構築できる 簡単な管理:新しいストリームを作り、あなたのデータスループットと規模に 合った必要なキャパシティとパーティションを設定するだけ リアルタイムアプリを構築: Kinesis Client Libray, Apache Spark/Storm, AWS Lambda等々を使って、ストリーミングデータ上のレコードをカスタム処理 する 低コスト: どんな規模のワークロードでもコスト効率が良い クリックストリームデータ をKinesis Streamsに送信 Kinesis Streamsがクリッ クストリームデータを保存し、 処理のために提供 Kinesis Client Libraryベースの カスタムアプリケーションによって、 リアルタイムのコンテンツレコメンド作成 読者はパーソナライズされた コンテンツの推薦を受けられる
  • 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 データ入力 & ストリーム処理 HTTPPost AWS SDK LOG4J Flume Fluentd Get* APIs Kinesis Client Library + Connector Library Apache Storm Amazon Elastic MapReduce データ入力 データ処理 AWS Mobile SDK Apache Spark Streaming
  • 14.
    Amazon Kinesis Firehose 大量のストリームデータをAmazonS3とAmazon Redshiftへ 管理不要: ストリームデータを捉えS3とRedshift、そして他の到達点へ一切アプリ ケーションを書くことなく、インフラも管理することなく転送できる データストアへの直接の連携: 簡単な設定だけで、ストリームデータをバッチ処 理し、圧縮し、そして暗号化してデータの到達点へ最短60秒で転送できる 継ぎ目のない弾力性: データのスループットに応じて、何の影響もなく自然 にスケールできる ストリームデータを捉え Firehoseに送信する Firehoseはストリームデータを 継続的にS3とRedshiftに転送する ストリームデータを 好きなBIツールで分析する
  • 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 Fluent plugin forAmazon 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.
    Amazon Kinesis Analytics データストリームを標準的なSQLで継続的に分析する ストリームにSQLを適応:簡単にデータストリームを接続でき、既存の SQLのスキルを適応できる リアルタイムアプリケーションを構築: ストリームのビッグデータに対 して、1秒以下のレイテンシの継続的な処理を実行 弾力的にスケール: データのスループットに合わせて、何の影響もなく 弾力的にスケールする アナウンスのみ! Kinesisのストリームや Firehoseのデリバリストリームを 接続する データストリームに対して 標準的なSQLを実行する Kinesis Analyticsは処理したデータを分析 ツールに送信できるので、アラートを作成して リアルタイムに反応することができる
  • 18.
  • 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 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 Stream processing withDocker 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 Stream processing withJVM 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 Stream processing withAWS 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 More Server-less StreamArchitecture • 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 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.