ストリーミングデータとは
ストリーミングデータは、低レイテンシー処理を目的とした継続する増分的な方法で大量に送信されるデータです。組織には、一般に数バイトから数メガバイト (MB) におよぶさまざまなサイズのメッセージ、レコード、またはデータを同時に送信する、何千ものデータソースがあります。ストリーミングデータには、企業がリアルタイムの分析と、そのビジネスのあらゆる側面に対する可視性のために使用する、ロケーション、イベント、およびセンサーデータが含まれています。例えば、企業は、クリックストリームとソーシャルメディアストリームからのお客様の投稿を継続的に分析し、必要に応じてすみやかに対応することによって、そのブランドと製品に関する世論の変化を追跡できます。
ストリーミングデータの性質
データストリームには、それを定義する次のような固有の性質があります。
時系列的な意義
データストリーム内の個々の要素にはタイムスタンプが含まれています。データストリーム自体に時間的制約があり、特定の期間後にその意義が低下する場合があります。例えば、アプリケーションがユーザーの現在地に基づいてレストランのレコメンデーションを提供するとします。ユーザーの地理的位置情報に基づいてリアルタイムでアクションを実行しなければ、そのデータの意義は失われてしまいます。
絶え間ないフロー
データストリームに始まりと終わりはありません。必要とされる限り、データを絶え間なく継続的に収集します。例えば、サーバーのアクティビティログは、サーバーが実行されている限り蓄積されます。
一意的
時間的制約があるため、データストリームの反復送信は困難です。そのため、正確でリアルタイムのデータ処理が重要になります。残念ながら、ほとんどのストリーミングデータソースでは、再送信のための措置が限られています。
非同種性
一部のソースは、文字列、数字、および日付などのデータ型とバイナリ型を伴う JSON、Avro、およびコンマ区切り値 (CSV) などの構造化形式での複数の形式でデータをストリーミングする場合があります。ストリーム処理システムには、このようなデータのばらつきを処理する機能が備わっている必要があります。
不完全
ソースでの一時的なエラーは、ストリーミングされたデータ内の破損または欠落した要素の原因となる場合があります。ストリームの継続的な性質のため、データ整合性を保証することは困難になり得ます。ストリーム処理システムと分析システムには通常、これらのエラーを緩和または最小限化するためのデータ検証用のロジックが含まれています。
ストリーミングデータが重要である理由
従来のデータ処理システムは、中心となるデータウェアハウスでデータを取得し、そのデータをグループまたはバッチで処理します。これらのシステムは、分析前にデータを取り込んで構造化するために構築されたものです。しかし、エンタープライズデータの性質と基盤となるデータ処理システムは、ここ数年で大幅に変化しました。
無限のデータボリューム
ストリームソースから生成されたデータボリュームは非常に大規模である場合があり、ストリーミングデータの完全性 (検証)、構造 (進化)、または速度 (スループットとレイテンシー) を制御するためのリアルタイムの分析における課題となっています。
高度なデータ処理システム
その一方で、クラウドインフラストラクチャが、コンピューティングリソースのスケーリングと使用における柔軟性をもたらしました。必要なものだけを使用して、使用分の料金のみを支払います。ストリーミングデータの保存前と保存後の両方で、リアルタイムのフィルタリングや集約を行うオプションがあります。ストリーミングデータのアーキテクチャは、ストリーミングデータを必要に応じて消費、強化、分析、および永続的に保存するためにクラウドテクノロジーを使用します。
ストリーミングデータのユースケースにはどのようなものがありますか?
ストリーム処理システムは、新しい動的なデータが継続的に生成されるシナリオのほとんどにメリットをもたらします。これは、大抵の業界およびビッグデータのユースケースに当てはまります。
企業は通常、システムログの収集や、最小値と最大値でのローリング計算といった初歩的な処理などのシンプルなアプリケーションから始めます。これらのアプリケーションはその後、ほぼリアルタイムのより高度な処理へと進化します。
ストリーミングデータの例は、他にも次のようなものがあります。
データ分析
アプリケーションがデータストリームを処理してレポートを生成し、主要測定値が特定のしきい値を超過するときにアラームを送信するなどの対応アクションを実行します。より高度なストリーム処理アプリケーションは、ビジネスおよびカスタマーアクティビティデータに機械学習アルゴリズムを適用することによって、より深い洞察を導き出します。
IoT アプリケーション
モノのインターネット (IoT) デバイスは、ストリーミングデータのもう 1 つのユースケースです。車両、産業機器、および農機具内のセンサーが、ストリーミングアプリケーションにデータを送信します。アプリケーションは、パフォーマンスを監視し、潜在的な欠陥を事前に検出して、交換部品を自動的に発注することによって、機器のダウンタイムを防ぎます。
金融分析
金融機関は、ストリームデータを使用して株式市場でのリアルタイムの変化を追跡し、Value at Risk (予想最大損失額) を計算して、株価の変動に基づいてポートフォリオのバランスを自動的に調整します。もう 1 つの金融ユースケースは、ストリーミングトランザクションデータに対してリアルタイムの推論を使用する、クレジットカード取引の不正検出です。
リアルタイムレコメンデーション
不動産アプリケーションは、消費者のモバイルデバイスからの地理的位置情報データを追跡して、訪問する物件のリアルタイムレコメンデーションを提供します。同様に、広告、食料品、小売、およびコンシューマーアプリケーションでも、お客様により多くの価値を提供するためにリアルタイムレコメンデーションを統合することができます。
サービス保証
データストリーム処理を実装して、アプリケーションおよび機器のサービスレベルを維持することができます。例えば、ある太陽光発電会社では、お客様に対する電力スループットを維持できないと、違約金を支払う必要があります。この会社は、現場にあるすべてのパネルを監視し、リアルタイムで点検をスケジュールするストリーミングデータアプリケーションを実装します。そうすることで、各パネルの低スループット期間と、関連する違約金の支払いを最小限に抑えることができます。
メディアとゲーミング
メディアパブリッシャーは、そのオンラインプロパティから何十億ものクリックストリームレコードをストリーミングし、ユーザーのデモグラフィック情報でデータの集計と強化を行って、コンテンツの配置を最適化しています。これは、パブリッシャーが関連性の高い、より優れたエクスペリエンスを対象者に提供するために役立ちます。同様に、オンラインゲーミング企業も、プレイヤーとゲーム間のやり取りを分析し、ダイナミックなエクスペリエンスを提供してプレイヤーをエンゲージするために、イベントストリーム処理を使用しています。
リスク管理
ライブストリーミングプラットフォームとソーシャルプラットフォームは、再チャージ、返金、およびリワードなどのユーザーの財務アクティビティに関するリスクを管理するために、ユーザーの行動データをリアルタイムで取得します。これらのプラットフォームは、リアルタイムのダッシュボードを表示して、リスク戦略を柔軟に調整します。
バッチデータとストリーミングデータにはどのような違いがありますか?
バッチ処理は、大量の反復的なデータジョブを定期的に完了するためにコンピュータが使用する方法です。これは、異なるデータセットに対する任意のクエリを計算するために使用できます。通常、対象となるすべてのデータから計算結果を取得して、大規模なデータセットの詳細な分析を可能にします。バッチジョブをサポートするプラットフォームの例には、Amazon EMR などの MapReduce ベースのシステムがあります。
これに対し、ストリーム処理では、データシーケンスを取り込んで、各着信データレコードに応じてメトリクス、レポート、およびサマリー統計を差分更新する必要があります。ストリーム処理は、リアルタイムの分析およびレスポンス機能に適しています。
バッチ処理 | ストリーム処理 |
|||
データ範囲 |
データセット内のデータの全部または大部分に対するクエリまたは処理。 | ローリング時間窓でのデータまたは直近のデータレコードのみに対するクエリまたは処理。 |
||
データサイズ |
大きなデータバッチ。 |
少数のレコードから成るマイクロバッチまたは個々のレコード。 |
||
パフォーマンス |
|
レイテンシーは数秒または数ミリ秒程度に抑える必要があります。 |
||
分析 |
複雑な解析。 | シンプルなレスポンス機能、集計、およびローリングメトリクス。 |
多くの組織では、これら 2 つのアプローチを組み合わせることでハイブリッドモデルを構築して、リアルタイムレイヤーとバッチレイヤーを維持しています。例えば、最初に Amazon Kinesis などのストリーミングデータプラットフォームでデータを処理してリアルタイムの洞察を引き出すことができます。その後、Amazon Simple Storage Service (Amazon S3) などのストアに永続化することができます。そこで、さまざまなバッチ処理ユースケースのために変換してロードすることができます。
Amazon Redshift Streaming Ingestion は、ユーザーがデータを Amazon S3 に保存することなく、Amazon Kinesis Data Streams から直接取り込むことを可能にします。このサービスは、Amazon Managed Streaming for Apache Kafka (Amazon MSK) からのデータを Amazon Redshift に取り込むこともできます。
ストリーミングデータをどのように処理できますか?
ストリーミングデータアーキテクチャには、2 つの主なコンポーネントタイプが含まれています。
ストリームプロデューサー
ストリームプロデューサーは、データを収集するアプリケーションおよび IoT システム内のソフトウェアコンポーネントです。これらは、ストリーム名、データ値、およびシーケンス番号が含まれるレコードをストリームプロセッサに送信します。プロセッサは、データレコードをバッファするか、それらをストリーム名で一時的に分類します。これは、シーケンス番号を使用して各レコード固有の位置を追跡し、データを時系列順に処理します。
ストリームコンシューマー
ストリームコンシューマーは、プロセッサでバッファされたデータストリームを処理して分析するソフトウェアコンポーネントです。各コンシューマーには、相関付け、集約、フィルタリング、サンプリング、または機械学習といった分析機能があります。各ストリームには複数のコンシューマーを設定でき、各コンシューマーが多数のストリームを処理できます。コンシューマーは、変更されたデータをプロセッサに返送して、別のコンシューマー向けの新しいストリームを作成することもできます。
アーキテクチャの実装
ストリーミングデータアーキテクチャを実装するには、ストレージレイヤーと処理レイヤーが必要です。ストレージレイヤーは、大規模なデータストリームの高速、低コスト、かつ再生可能な読み書きを可能にするために、レコードの順序付けと強力な整合性をサポートする必要があります。処理レイヤーは、ストレージレイヤーからのデータを消費し、そのデータに対して計算を実行した後で、不要になったデータを削除するようにストレージレイヤーに通知する責任を担います。
ストリーミングデータの使用における課題
ストリーミングデータアーキテクチャには、その性質とデータの量のために、特別な配慮が必要になります。
可用性
ストリーミングデータアプリケーションには、整合性、低レイテンシー、および高可用性が必要です。コンシューマーは、ストリームから新しいデータを絶えず取得し、処理しています。プロデューサーからの遅延は、システムを混雑させ、エラーを発生させる可能性があります。
スケーラビリティ
未処理のデータストリームは、思いがけず急激に増加する場合があります。例えば、大きなスポーツイベント中は、ソーシャルメディアへの投稿が急増します。そのため、システムはピークロード期間でも、適切なデータのシーケンシング、可用性、および整合性を優先する必要があります。
耐久性
データには時間的制約があるため、ストリーム処理システムには耐障害性が備わっている必要があります。耐障害性がない場合、停電や障害の発生時にデータが永久的に失われることになります。
AWS はストリーミングデータの要件をどのようにサポートできますか?
AWS は、ストリーミングデータを使用するためのオプションを複数提供しています。
Amazon Kinesis
Kinesis は、AWS でデータをストリーミングするためのプラットフォームです。ストリーミングデータのロードと分析を容易にする堅牢なサービスを提供しながら、特殊なニーズに対応するカスタムストリーミングデータアプリケーションを構築することも可能にします。
Kinesis は、Amazon Kinesis Data Firehose、Amazon Kinesis Data Streams、および Amazon Managed Streaming for Apache Kafka (Amazon MSK) の 3 つのサービスを提供します。
Kinesis Data Firehose
Kinesis Data Firehose は、ストリーミングデータを取得して、Amazon Simple Storage Service (Amazon S3) および Amazon Redshift に自動的にロードすることができます。これは、現在既に使用されている既存のビジネスインテリジェンスツールとダッシュボードを使用して、リアルタイムの分析を実行することを可能にします。
Kinesis Data Streams
Kinesis Data Streams は、何十万ものソースから、1 時間あたり数テラバイト (TB) におよぶデータを継続的に取得して保存することができます。Amazon Kinesis Client Library (KCL)、Apache Storm、および Apache Spark Streaming などの任意のストリーム処理フレームワークをサポートします。
Amazon MSK
Amazon MSK は、ストリーミングデータを処理するために、Apache Kafka を使用するアプリケーションを簡単に構築して実行できるようにするフルマネージドサービスです。Apache Kafka は、リアルタイムのストリーミングデータパイプラインとアプリケーションを構築するためのオープンソースプラットフォームです。
Amazon Redshift
Amazon Redshift Streaming Ingestion では、ユーザーがリアルタイムの分析のために、複数の Kinesis データストリームからのストリーミングデータを各自のデータウェアハウスに取り込むことができます。使い慣れた SQL を使用して充実した分析を実行し、ELT パイプラインを簡単に作成して管理することができます。また、大量のストリーミングデータを低レイテンシーと高スループットで処理し、数秒で洞察を引き出すこともできます。
Amazon EC2 で動作するその他のストリーミングソリューション
任意のストリーミングデータプラットフォームを Amazon Elastic Compute Cloud (Amazon EC2) と Amazon EMR にインストールして、カスタムストリームストレージレイヤーと処理レイヤーを構築することができます。その結果、インフラストラクチャプロビジョニングにおけるフリクションを回避するとともに、さまざまなストリームストレージおよび処理フレームワークにアクセスできるようになります。データストレージレイヤーのオプションには、Amazon MSK および Apache Flume などがあります。ストリーム処理レイヤーのオプションには、Apache Spark Streaming および Apache Storm などがあります。
今すぐ無料の AWS アカウントを作成して、AWS でストリーミングデータの使用を開始しましょう。