【AWS】ストリームデータ処理のあれこれ

AWS Certified Solutions Architect–Associate認定に先日合格しました。

その出題問題の中でもストリームデータの取り扱いについてよくこんがらがったので、まとめたいと思います。

I. はじめに

・ストリームデータ処理とは何か

ストリームデータとは、時間の経過に伴って連続的に発生するデータのことを指します。

ストリームデータ例

イベントデータ、トランザクションデータ、ログデータ、センサーデータ、テキストデータ、画像データ

例にも挙げているビッグデータなどのデータが増加したことやサービスの高度化で次々に作成されるデータを処理し解析することが求められたことがストリームデータ処理が必要とされています。

・ストリームデータを収集、分析、保存する際の課題

ストリームデータ処理する上で以下のような課題が挙げられる。

課題事項

  • リアルタイム性の確保
  • データのスケーラビリティ
  • データの複雑性の増加

上記課題を解決するためにAWSでは以下サービスを用いてシステム開発を可能としている。

II. ストリームデータ収集のためのサービス

Amazon Kinesis Data Stream

Amazon Kinesis Data Stream
https://aws.amazon.com/jp/kinesis/data-streams/

高いスループットでリアルタイムなストリームデータを収集、処理、保存することができるサービスです。データは小さなパーティションであるシャードに分割され、均等に分散された後、シーケンシャルに保存されます。シャードの作成や分割、スループットの調整により、高速で正確なデータ処理が可能となります。

Amazon Kinesis Data Firehose(Streamsのジェネリック版?)

Amazon Kinesis Data Firehose
https://aws.amazon.com/jp/kinesis/data-firehose/

データをシャードに分割せずに直接送信してデータ収集を行うことができます。Lambda関数を使用してデータ変換、フィルタリング、および圧縮を行い、S3やRedshiftなどのストレージにデータを配信することができます。
Kinesis Data Streamsに比べると、高速処理には向かず、大量のデータ処理には適していませんが、シンプルなデータ収集ソリューションを提供し、リアルタイムでデータを変換して保存することができます。

テストでは以下を覚えておくことが大事ですね。

高速なデータ収集を要する場合はKinesis Data Stream
簡潔なシステム構築や即時性を求めず大量データを収集する場合はKinesis Data Firehose

III. ストリームデータ分析のためのサービス

Amazon Kinesis Data Analytics

Amazon Kinesis Data Analytic
https://aws.amazon.com/jp/kinesis/data-analytics/

標準的なプログラミング言語であるSQLJavaPythonなどを使用して、リアルタイムでストリームデータを分析するサービスです。ストリームデータの特定のパターン検出や異常なアクティビティの検出などをリアルタイムで行うことができます。
データのストリーミング処理と同時に、リアルタイムで分析を実行し、処理結果をKinesisデータストリームに再度書き込むことができます。
ストリームデータのリアルタイム分析に必要な機能を提供し、分析結果をリアルタイムにフィードバックすることができます。

Amazon EMR

Amazon EMR
https://aws.amazon.com/jp/emr/

HadoopやSparkなどのオープンソースビッグデータフレームワークをサポートしており、ストリームデータを含む膨大なデータ量のバッチ処理や分析が可能です。EMRで構築されたクラスターは柔軟性が高く、必要に応じてスケーリングや構成変更ができます。また、S3やRedshiftなどのストレージサービスとの連携も可能です。

Amazon Athena

Amazon EMR
https://aws.amazon.com/jp/emr/

ストリームデータをリアルタイムで分析できないため、静的なデータを分析するのに適しています。SQLを使用して、S3やGlueのデータカタログに保存されたデータを簡単にクエリできます。分析結果をS3に保存したり、QuickSightで視覚化することができます。

Amazon Redshift

Amazon Redshift
https://aws.amazon.com/jp/redshift/

高速で拡張性が高く、大量のストリームデータを収集して分析することができるクラウド型データウェアハウスサービスです。ストリームデータをRedshiftに格納して、SQLを使用してリアルタイムで分析することが可能です。AWS GlueなどのETLツールと連携して、データの取り込みや変換、ロードを自動化することもできます。

Amazon QuickSight

Amazon QuickSigh
https://aws.amazon.com/jp/quicksight/

ストリームデータをリアルタイムに可視化・分析できるビジネスインテリジェンスツールです。データソースをAmazon KinesisAmazon S3に設定し、ダッシュボードやレポートを作成することができます。データの自動更新やインタラクティブなフィルタリングも可能です。

以下にこれらの分析サービスの差異をまとめます。

テストでは以下を覚えておくことが大事ですね。

リアルタイムであればAmazon Kinesis Data Analytics

S3に保存されたデータ分析であればAmazon Athena

Redshiftに保存されたデータ分析であればAmazon Redshift

サービス名 特徴 保存先 使用シーン
Amazon Kinesis Data Analytics リアルタイムでのデータ処理・分析が可能。SQLを用いた分析が可能。 データストリーム、S3、Redshift、Elasticsearch、Kinesis Data Firehoseなど リアルタイムでのストリームデータの分析
Amazon EMR オープンソースの分散処理フレームワークであるApache HadoopやSparkなどが利用可能。EC2上にクラスターを構築し、分散処理が可能。 S3、Redshift、DynamoDB、HBase、Hiveなど バッチ処理に適した大量のデータの分析
Amazon Athena サーバーレスで利用可能な分析サービス。SQLを用いて、S3に保存されたデータを分析することが可能。 S3 S3に保存された静的なデータの分析
Amazon Redshift ペタバイト単位の大量のデータの処理が可能なデータウェアハウスサービス。カラムベースのアーキテクチャにより高速なクエリ処理が可能。 Redshift 大量のデータを高速に分析するためのデータウェアハウス
Amazon QuickSight ビジュアルデータ分析サービス。様々なデータソースからのデータを視覚的に分析することが可能。 様々なデータソース(S3、Redshift、RDS、Athenaなど) 視覚的なデータ分析、ダッシュボードの作成

 

思い違いなど多々あると思いますので、コメントでご指摘頂けますと幸いです。