ストリーミングデータとは
ストリーミングデータは、数千ものデータソースによって継続的に生成されるデータです。通常は、小さなサイズ (キロバイト単位) で同時にデータレコードが送信されます。ストリーミングデータには、お客様のモバイルアプリケーションやウェブアプリケーションで顧客によって生成されるログファイル、e コマースでの購入内容、ゲーム内でのプレイヤーのアクティビティ、さらにはソーシャルネットワーク、証券取引所の立会場、または地理空間サービスからの情報、およびデータセンター内の接続されたデバイスや計器からのテレメトリなど、広範なデータがあります。
これらのデータは、レコード単位またはスライドした時間窓で連続的および増分的に処理する必要があり、相関分析、集計、フィルタリング、およびサンプリングなど、広範な分析に使用することができます。これらの分析から得られる情報により、企業では、顧客のサービス使用状況 (計測/請求用)、サーバー アクティビティ、ウェブサイトのクリック数、ならびにデバイス、ユーザー、物品の地理的場所など、自社ビジネスおよび顧客アクティビティの様々な側面を可視化し、新しい状況にすばやく対応できるようになります。例えば、ソーシャルメディアのストリームを継続的に分析することで、自社のブランドや製品への好感度の変化を追跡し、必要に応じてすばやく対応することができます。
ストリーミングデータの利点
新しい動的なデータが継続的に生成されるほとんどのシナリオで、ストリーミングデータ処理には利点があります。これは、ほとんどの業界およびビッグデータのユースケースに当てはまります。企業では一般に、システムログの収集や、ローリング最小値/最大値の計算などの基本的処理をはじめとする、シンプルなアプリケーションから始めます。その後、このようなアプリケーションはより洗練された、ほぼリアルタイムの処理に移行します。はじめに、アプリケーションではデータストリームを処理してシンプルなレポートを生成し、重要指標が特定のしきい値を超えたときにレスポンスとしてアラームを発するなどのシンプルなアクションを実行することができます。最終的には、そのようなアプリケーションでも、機械学習のアルゴリズムを適用するなど、洗練された形のデータ分析を行い、データから深いインサイトを抽出するようになります。やがて、現在最も人気のある動画を検出するための減衰時間枠などの複雑なストリームおよびイベント処理アルゴリズムが適用され、さらに充実したインサイトが得られるようになります。
ストリーミングデータの例
- 輸送車両、産業機器、および農業機械のセンサーが、ストリーミングアプリケーションにデータを送信します。アプリケーションは、パフォーマンスをモニタリングして事前に潜在的なエラーを検出し、交換部品を自動的に発注して機械のダウンタイムを防ぎます。
- ある金融機関では、株式市場の変化をリアルタイムで追跡して最大損失予想額を計算し、株価の変動に基づいて自動的にポートフォリオをリバランスしています。
- ある不動産会社のウェブサイトでは、コンシューマーのモバイルデバイスのデータサブセットを追跡し、コンシューマーの現在住所に基づいて訪れることのできる推薦物件をリアルタイムで紹介します。
- ある太陽光発電会社では、顧客に対する出力電力を維持できないと、違約金を支払う必要があります。その会社では、ストリーミングデータアプリケーションを実装して現場の全パネルをモニタリングし、リアルタイムで修理をスケジュールして、各パネルの低出力の時間とその間の違約金の支払いを最小限に抑えることができました。
- あるメディアでは、オンライン資産から数十億ものクリックストリームレコードをストリーミングし、ユーザーに関するデモグラフィック情報が含まれるデータを集計および拡充して、サイトへのコンテンツ配置を最適化し、高い関連性とより良いエクスペリエンスをユーザーに提供しています。
- あるオンラインゲーム会社では、プレイヤーとゲームのインタラクションに関するストリーミングデータを収集して、それをゲームプラットフォームに供給しています。さらに、そのデータをリアルタイムで分析することで、プレイヤーを囲い込むためのインセンティブとダイナミックなエクスペリエンスを提供しています。
バッチ処理とストリーム処理の比較
ストリーミングデータを扱う前に、ストリーム処理とバッチ処理を対比して整理することをお勧めします。バッチ処理は、様々なデータセットに対する無作為のクエリをコンピューティングするのに使用できます。バッチ処理では、通常、対象となるすべてのデータから得られた結果をコンピューティングし、ビッグデータセットを深く分析します。バッチジョブをサポートするプラットフォームの例には、Amazon EMR などの MapReduce ベースのシステムがあります。これに対し、ストリーム処理では、データのシーケンスを取り込んで、データレコードが供給されるたびに増分的にメトリクス、レポート、サマリー統計を更新する必要があります。ストリーム処理はリアルタイムモニタリングおよびレスポンス機能に適しています。
バッチ処理 | ストリーム処理 | |
データ範囲 | データセット内のデータの全部または大部分に対するクエリまたは処理。 | ローリング時間枠でのデータまたは直近のデータレコードのみに対するクエリまたは処理。 |
データサイズ | 大きなデータバッチ。 |
少数のレコードから構成されるマイクロバッチまたは個々のレコード。 |
パフォーマンス | 数分から数時間のレイテンシー。 | レイテンシーは数秒または数ミリ秒程度に抑える必要があります。 |
分析 | 複雑な解析。 | シンプルなレスポンス機能、集計、およびローリングメトリクス。 |
多くの組織では、これら 2 つのアプローチを組み合わせてハイブリッドモデルを構築しており、リアルタイムレイヤーとバッチレイヤーを管理しています。リアルタイムインサイトを抽出するため、データはまず Amazon Kinesis などのストリーミングデータプラットフォームによって処理されます。その後、S3 などのストアに永続化されます。S3 では、データは様々なバッチ処理のユースケースに合わせて変換およびロードされます。
ストリーミングデータ処理での課題
AWS でのストリーミングデータの処理
アマゾン ウェブ サービス (AWS) では、ストリーミングデータを処理するためのオプションをいくつかご用意しています。Amazon Kinesis で提供されるマネージドストリーミングデータサービスを利用することも、Amazon EC2 のクラウドで独自のストリーミングデータソリューションをデプロイおよび管理することもできます。
Amazon Kinesis は AWS のデータをストリーミングするためのプラットフォームで、ストリーミングデータの取り込みおよび分析を簡易化する強力なサービスを提供するとともに、特定のニーズ用のカスタムストリーミングデータアプリケーションも作成できるようにします。Amazon Kinesis Data Firehose、Amazon Kinesis Data Streams、および Amazon Managed Streaming for Apache Kafka (Amazon MSK) の 3 つのサービスを提供します。
さらに、Amazon EC2 と Amazon EMR では、Apache Flume、Apache Spark Streaming、および Apache Storm など、他のストリーミングデータプラットフォームも実行することができます。
Amazon Kinesis Data Streams
Amazon Kinesis Data Streams を使用すると、特定のニーズに合わせてストリーミングデータを処理または分析する独自のカスタムアプリケーションを構築することができます。1 時間に数十万のソースからの数テラバイトのデータを継続的にキャプチャおよび保存することができます。そして、Amazon Kinesis Data Streams のデータを使用するアプリケーションを構築し、リアルタイムダッシュボードの機能の強化、アラートの生成、動的な価格設定と広告の実装などを行うことができます。Amazon Kinesis Data Streams では、Kinesis Client Library (KCL)、Apache Storm、Apache Spark Streaming などからストリーミング処理フレームワークを選択することができます。
Amazon Kinesis Data Firehose
Amazon Kinesis Data Firehose は、ストリーミングデータを AWS にロードする最も簡単な方法です。これにより、ストリーミングデータをキャプチャし、Amazon S3 および Amazon Redshift に自動的にロードすることで、現在お使いのビジネスインテリジェンスツールやダッシュボードでほぼリアルタイムに分析できるようになります。すばやく ELT アプローチを実装して、ストリーミングデータの利点を手軽に得ることができます。
Amazon Managed Streaming for Apache Kafka (Amazon MSK)
Amazon MSK は、ストリーミングデータの処理に Apache Kafka を使用するアプリケーションの構築と実行を容易に行えるようにする、フルマネージド型のサービスです。Apache Kafka は、リアルタイムのストリーミングデータパイプラインおよびアプリケーションを構築するためのオープンソースプラットフォームです。Amazon MSK では、ネイティブ Apache Kafka API を使用し、データレイクへの入力、データベースとの間での変更のストリーミング、機械学習および分析アプリケーションの強化を行うことができます。
Amazon Managed Service for Apache Flink
Amazon Managed Service for Apache Flink により、Apache Flink を使用してリアルタイムストリーミングアプリケーションを簡単に構築して実行できます。Amazon Managed Service for Apache Flink は、ストリーミングアプリケーションの実行に必要なすべての処理を行います。管理するサーバーやクラスターはなく、コンピューティングやストレージのインフラストラクチャをセットアップする必要もありません。お客様は、使用したリソースに対してのみ料金を支払います。最小限のコードでデータソースまたは送信先を設定および統合し、1 秒未満のレイテンシーでデータを継続的に処理し、イベントにリアルタイムで対応します。Amazon Managed Service for Apache Flink は、システムの安全性、更新、コンプライアンス、最適化を維持するという重要なタスクを処理するため、お客様はアプリケーションの構築に集中できます。
Amazon EC2 で動作するその他のストリーミングソリューション
任意のストリーミングデータプラットフォームを Amazon EC2 と Amazon EMR にインストールし、独自のストリームストレージレイヤーと処理レイヤーを構築することができます。Amazon EC2 と Amazon EMR にストリーミングデータソリューションを構築することで、インフラストラクチャのプロビジョニング時の摩擦を回避し、様々なストリームストレージフレームワークとストリーム処理フレームワークにアクセスできるようになります。ストリーミングデータのストレージレイヤーの選択肢としては、Amazon MSK と Apache Flume があります。ストリームの処理レイヤーの選択肢としては、Apache Spark Streaming と Apache Storm があります。
次のステップ
- Amazon MSK の詳細
- Amazon Kinesis の詳細
- AWS のビッグデータサービスの詳細
- Apache Spark on Amazon EMR のページを確認
- Amazon Kinesis Data Firehose と Amazon Redshift を使用して、数回のクリックのみでストリーミングデータをインサイトに変換