Amazon Kinesis によるストリーミング処理をまとめる

n-ozawan

皆さん、こんにちは。技術開発グループのn-ozawanです。
本日8月28日は、民法方法によるテレビ放送が開始された日です。

本題です。
一般的なシステムでは大量のデータを処理したい場合は、その日の決められた時間にバッチ処理などで処理します。しかし、システムによっては大量のデータをリアルタイムで処理したいことがあります。今回はAWSが提供するAmazon Kinesisでどういったストリーミング処理が行えるのか、関連するサービスをまとめました。

Amazon Kinesis

概要

Amazon Kinesisはストリーミングデータを効率よく処理するサービスです。一般的にストリーミングとは音楽や動画などの大きなファイルをダウンロードしながら処理することを指しします。Amazon Kinesisでは、XなどのSNSの投稿や、IoT端末からの大量のデータをリアルタイムで処理することを可能とします。

Amazon Kinesisは、撮影した動画や大量のデータを収集、処理、分析するために、以下のサービスを提供しています。

  • Amazon Kinesis Data Streams
  • Amazon Kinesis Data Firehose
  • Amazon Managed Service for Apache Flink (旧:Amazon Kinesis Data Analytics)
  • Amazon Kinesis Video Streams

Amazon Kinesis Data Streams

Amazon Kinesis Data Streamsは、大量のストリームデータをリアルタイムで収集するサービスです。

Amazon Kinesis Data Streams の用語と概念

Kinesis Data Streamsは、モバイル端末やIoT端末などからデータを収集します。収集したデータはデフォルトで24時間保持し続け、EC2やLambdaなどのコンシューマが収集したデータを処理していきます。

Kinesis Data Streamsに送信されたストリーミングデータはシャードにより処理されます。もし、送られてくるデータ量が増加した場合は、シャードをオートスケーリングすることにより、データ量増大に対処することが可能です。また、Kinesis Data Streamsは受け取ったデータをコンシューマによって読み取られるまでを1秒未満で処理できるように設計されており、次々に上がってくるデータをリアルタイムで加工するのに向いています。

Amazon Kinesis Data Firehose

Amazon Kinesis Data Firehoseは、大量のストリームデータをリアルタイムで収集するサービスです。

Kinesis Data Streamsとの違いは、Kinesis Data Streamsは収集したデータをEC2やLambdaなどのコンシューマが取得していくのに対して、Kinesis Data Firehoseは収集したデータをS3やRedshiftなどにPush配信することです。Kinesis Data Firehoseの主な用途としては、データ分析のためのストリーミング処理となります。

そのため、Kinesis Data Firehoseでは、Kinesis Data Streamsと比べてそこまで処理が早くないです。また、S3などでデータを適切に送信するため、ストリーミングデータの圧縮や暗号化が行えるようになっています。

Amazon Managed Service for Apache Flink (旧:Amazon Kinesis Data Analytics)

Amazon Managed Service for Apache Flinkは、Kinesis Data StreamsやKinesis Data Firehoseで収集したストリーミングデータをSQLを使用して分析することが出来るサービスです。

上記は例です。Lambdaなどにより、インターネット上にある情報を検索/取得を行い、その結果をKinesis Data Streamsに送信します。Amazon Managed Service for Apache Flink は、収集されたKinesis Data Streamsを特定の条件にて検索し、その結果をKinesis Data Firehoseを通してS3へ送信します。S3へ送信されたデータはAmazon Athenaにより分析され可視化されます。

Amazon Kinesis Video Streams

Amazon Kinesis Video Streamsは、動画ストリームデータをリアルタイムで収集するサービスです。

収集した動画ストリームデータは、Amazon Rekognition Video(動画解析サービス)や、Amazon SageMaker(機械学習)などと連携して、リアルタイムに動画分析を行うことが出来ます。

おわりに

IoTを活用したソリューションを構築しようとした場合、IoT端末からの大量データをどう処理するのかが課題となります。Amazon Kinesisを利用すれば、そういった課題が解消されそうですね。

ではまた。

Recommendおすすめブログ