# 資料1より抜粋 ## Kinesis 外部システムから送られてくる大量のストリーミングデータをリアルタイムで収集処理分析することができるマネージドサービス。 KinesisはIoT用の大量の端末やセンサー装置から送られてくるデータの処理、大量のユーザーが同時アクセスしているWEBサービスやゲームの情報分析、大規模なサーバーで運用しているログやメトリクスの収集・解析など、外部から送られてくる数百万規模の大量のデータを受信してリアルタイムに処理するのに適している。SQSとの違いは、シーケンス番号で順番を確認できる点。 ### Kinesis Data Streams 送信側から大量におくられてくるデータをストリーム内に保持し、そのデータを受信側がストリームから取得することで、後続処理を可能にするサービス。 Kinesis Data Streamsを利用する場合、データの種類や処理の用途に応じて、あらかじめストリームを作成する。ストリームは1つ以上のシャードで構成される。また、保存されるデータの単位をデータレコードと呼ぶ。データの保存期間はデフォルトで24時間、最長7日間。そのため、データを長期間保存するような処理には向いていない。 ### Kinesis Data Firehose ストリームデータをS3、Redshift、Elasticsearch Serviceなどに直接配信するサービス。簡単な設定により、ストリームデータの加工や暗号化などがdけいる。ストリームデータを加工したい場合は、Lambdaと連携させることによりデータを処理する。 Kinesis Data Firehoseは、S3などのストレージやRedshiftなどのデータベースサービスにデータを配信することに特化したもの。Kinesis Data Streamsのように24時間以上データを保持しておき、順次処理でデータを取得してストリーミングデータを処理するようなサービスではない。 ### Kinesis Data Analytics 既存の標準的なSQLクエリを利用してストリームデータをリアルタイムで分析できるサービス。 分析単位としてストリーム上にアプリケーションを作成、入力でストリーミングソース、出力でデスティネーションを設定し、アプリケーション内部の入出力ストリームにマッピングする。SQLクエリ実行前の前処理としてLambda関数の指定が可能。 Kinesis Data Streamsの場合は、受信側がストリームに保存されたデータを受信し、処理した結果をストレージやデータベースサービスに保存してはじめて分析が可能なる。これに対してKinesis Data Analyticsは、ストリーム城のデータに直接SQLを発行し、分析できる。 # 資料2より抜粋 - **Kinesis** Kinesisは主にストリーミングデータの収集・処理・リアルタイム分析に利用される ==サーバレスかつ処理ボリュームに応じて拡張するため、Auto Scaling+EC2などの自前で構築するよりも、簡単かつ低コストでストリームデータのバッファリング処理が可能となる なおSQSとの主な違いは、Kinesisでは復習のコンシューマが同時に同じメッセージを取得して処理できる点 Kinesisは以下のサービスから構成される== - ==**Kinesis Data Streams** ストリーミングデータをほぼリアルタイムで保存することが出来、登録されたデータはEMRやLambdaなどのサービス上に構築された独自アプリケーションで処理することが可能 また、流れてくる大容量のデータを効率的に処理するためにシャードと呼ばれる単位でデータを分割して並列処理を個なうことが出来る== **Kinesis Data Streamsのイメージ** ```mermaid graph LR subgraph データ送信側 データレコードA データレコードB データレコードC データレコードD end subgraph KinesisDataStreams エンドポイント ストリーム/シャードA ストリーム/シャードB ストリーム/シャードC end subgraph データ処理側 EMR Lambda Redshift S3 end データレコードA-->エンドポイント データレコードB-->エンドポイント データレコードC-->エンドポイント データレコードD-->エンドポイント エンドポイント-->ストリーム/シャードA エンドポイント-->ストリーム/シャードB エンドポイント-->ストリーム/シャードC ストリーム/シャードA-->EMR ストリーム/シャードA-->Lambda ストリーム/シャードA-->Redshift ストリーム/シャードA-->S3 ストリーム/シャードB-->EMR ストリーム/シャードB-->Lambda ストリーム/シャードB-->Redshift ストリーム/シャードB-->S3 ストリーム/シャードC-->EMR ストリーム/シャードC-->Lambda ストリーム/シャードC-->Redshift ストリーム/シャードC-->S3 ``` - ==**Kinesis Data Firehose** 独自にアプリケーションを構築することなく、ストリームデータをAmazonの各サービスに簡単に配信・保存できるサービス 例えば、ストリーミングされるデータを分析用データとしてS3やRedshiftに累積するケースなどで利用== **Kinesis Data Firehoseのイメージ** ```mermaid graph LR subgraph データ送信側 データレコードA データレコードB データレコードC データレコードD end subgraph KinesisDataFirehose エンドポイント S3配信ストリーム Redshift配信ストリーム ES配信ストリーム end subgraph データ処理側 S3 Redshift ES end データレコードA-->エンドポイント データレコードB-->エンドポイント データレコードC-->エンドポイント データレコードD-->エンドポイント エンドポイント-->S3配信ストリーム エンドポイント-->Redshift配信ストリーム エンドポイント-->ES配信ストリーム S3配信ストリーム-->S3 Redshift配信ストリーム-->Redshift ES配信ストリーム-->ES ``` - ==**Kinesis Data Analytics** ストリーミングデータに対してSQLクエリを実行し、リアルタイム分析を行うサービス SQLクエリを利用できるため、例えば1分ごとのストリーミングデータの合計値や平均値などを簡単に計算できる== # 資料3より抜粋 ## Kinesisの概要 **ストリームデータを収集、処理するためのフルマネージド型サービスで主に3つのサービスで構成される** - Amazon Kinesis Streams - ストリームデータを処理するアプリケーションを構築 - Amazon Kinesis Firehose - ストリームデータをS3やRedshiftなどへ簡単に配信 - Amazon Kinesis Analytics - ストリームデータを標準的なSQLクエリでリアルタイムに可視化、分析 ### Amazon Kinesis Streams **ストリームデータ処理用の分析システムやアプリケーションを構築するサービス** ```mermaid graph LR IoTデータ-->KinesisStreams KinesisStreams-->SparkStreaming SparkStreaming-->アプリケーション ``` **ストリーミング処理をシャードに分けて分散させて実行するため高速処理が可能** ```mermaid graph LR subgraph ストリーム Shard1 Shard2 Shard3 end ``` **Kinesis Streamsのデータ提供側とデータ利用側に様々なサービスが利用可能** ```mermaid graph TB subgraph データ利用側 KinesisFirehose KinesisClient KinesisAnalytics Lambda EMR ApacheStorm end subgraph ストリーム Shard1 Shard2 Shard3 end subgraph データ提供側 KinesisAppender KinesisProducer KinesisAgent AWSSDK CloudWatch Fluentd AWSIoT end KinesisFirehose-->Shard1 KinesisClient-->Shard1 KinesisAnalytics-->Shard1 Lambda-->Shard1 EMR-->Shard1 ApacheStorm-->Shard1 KinesisFirehose-->Shard2 KinesisClient-->Shard2 KinesisAnalytics-->Shard2 Lambda-->Shard2 EMR-->Shard2 ApacheStorm-->Shard2 KinesisFirehose-->Shard3 KinesisClient-->Shard3 KinesisAnalytics-->Shard3 Lambda-->Shard3 EMR-->Shard3 ApacheStorm-->Shard3 Shard1-->KinesisAppender Shard1-->KinesisProducer Shard1-->KinesisAgent Shard1-->AWSSDK Shard1-->CloudWatch Shard1-->Fluentd Shard1-->AWSIoT Shard2-->KinesisAppender Shard2-->KinesisProducer Shard2-->KinesisAgent Shard2-->AWSSDK Shard2-->CloudWatch Shard2-->Fluentd Shard2-->AWSIoT Shard3-->KinesisAppender Shard3-->KinesisProducer Shard3-->KinesisAgent Shard3-->AWSSDK Shard3-->CloudWatch Shard3-->Fluentd Shard3-->AWSIoT ``` **KinesisStreamsは次の関連機能を活用してストリーミング処理アプリケーションを構築する** - Amazon Kinesis Agent - Kinesisサービスにデータを簡単に収集して取り込むOSSのスタンドアロンJavaアプリケーション - Amazon Kinesis Producer Library(KPL) - Kinesis Streamsにデータを送信するOSSの補助ライブラリ - Fluent plugin for Amazon Kinesis - Kinesis StreamsとKinesis Firehoseにイベントを送信するOSSのFluentd出力プラグイン - Amazon Kinesis Data Generator(KDG) - Kinesis Data Generator(KDG)を利用してKinesis StreamsまたはKinesis Firehoseにテストデータを簡単に送信できる - Amazon Kinesis Client Library(KCL) - KCLを利用してKinesisアプリケーションを作成する。OSSのクライアントライブラリで、EC2インスタンスなどにデプロイして利用する ### Amazon Kinesis Firehose **各種DBに配信、蓄積するためのストリーム処理を実施する。Lambdaと連携するとETLとしても機能する** ```mermaid graph LR IoTデータ-->KinesisFirehose KinesisFirehose-->S3 KinesisFirehose-->Redshift KinesisFirehose-->ElasticSearch ``` ### Amazon Kinesis Analytics **ストリームデータを標準的なSQLクエリでリアルタイムに分析** ```mermaid graph LR subgraph ストリーミングデスティネーション KinesisFirehose2 KinesisStreams2 end subgraph ストリーミングリソース KinesisFirehose1 KinesisStreams1 end KinesisFirehose1-->KinesisAnalytics KinesisStreams1-->KinesisAnalytics KinesisAnalytics-->KinesisFirehose2 KinesisAnalytics-->KinesisStreams2
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up