Azure でのストリーム処理テクノロジの選択
この記事では、Azure でのリアルタイム ストリーミング処理を行うためのテクノロジの選択肢を比較します。
リアルタイム ストリーム処理では、キューまたはファイル ベースのストレージのメッセージを使用し、メッセージを処理して、結果を別のメッセージ キュー、ファイル ストア、またはデータベースに転送します。 処理には、クエリの実行、フィルター処理、およびメッセージの集計が含まれることがあります。 ストリーム処理エンジンは、終わりのないデータのストリームを使用して、最小限の待機時間で結果を生成できる必要があります。 詳しくは、「Real time processing」(リアルタイム処理) をご覧ください。
リアルタイム処理用のテクノロジを選択する場合の選択肢
Azure では、以下のすべてのデータ ストアがリアルタイム処理のコア要件を満たしています。
- Azure Stream Analytics
- Spark Streaming を使用する HDInsight
- Azure Databricks における Apache Spark
- Azure Functions
- Azure App Service WebJobs
- Apache Kafka Streams API
主要な選択条件
リアルタイム処理のシナリオでは、次の質問に答えることによって、ニーズに適した適切なサービスを選択することから始めます。
宣言型または命令型のアプローチでストリーム処理ロジックを作成したいですか。
テンポラル処理またはウィンドウに対する組み込みのサポートが必要ですか。
データは、Avro、JSON、または CSV 以外の形式で到着しますか。 「はい」の場合は、カスタム コードを使用して任意の形式をサポートするオプションを検討してください。
1 GBps を超えるように処理を拡張する必要がありますか。 「はい」の場合は、クラスター サイズに対応するオプションを検討してください。
機能のマトリックス
次の表は、機能の主な相違点をまとめたものです。
一般的な機能
機能 | Azure Stream Analytics | Spark Streaming を使用する HDInsight | Azure Databricks における Apache Spark | Azure Functions | Azure App Service WebJobs |
---|---|---|---|---|---|
プログラミング | SQL、JavaScript | C#/F#、Java、Python、Scala | C#/F#、Java、Python、R、Scala | C#、F#、Java、Node.js、Python | C#、Java、Node.js、PHP、Python |
プログラミング パラダイム | 宣言型 | 宣言型と命令型の混合 | 宣言型と命令型の混合 | 命令型 | 命令型 |
価格モデル | ストリーミング ユニット | 1 分あたりのノード コスト | Databricks の単位 | 関数の実行とリソースの消費量あたり | App Service プランの時間単位 |
統合機能
機能 | Azure Stream Analytics | Spark Streaming を使用する HDInsight | Azure Databricks における Apache Spark | Azure Functions | Azure App Service WebJobs |
---|---|---|---|---|---|
入力 | Azure Event Hubs、Azure IoT Hub、Azure Blob Storage/Data Lake Storage Gen2 | Event Hubs、IoT Hub、Kafka、HDFS、Storage Blobs、Azure Data Lake Store | Event Hubs、IoT Hub、Kafka、HDFS、Storage Blobs、Azure Data Lake Store | サポートされるバインディング | Service Bus、Storage Queues、Storage Blobs、Event Hubs、WebHooks、Azure Cosmos DB、Files |
シンク | Azure Data Lake Storage Gen 1、Azure Data Explorer、Azure Database for PostgreSQL、Azure SQL Database、Azure Synapse Analytics、Blob Storage および Azure Data Lake Gen 2、Azure Event Hubs、Power BI、Azure Table Storage、Azure Service Bus キュー、Azure Service Bus トピック、Azure Cosmos DB、Azure Functions | HDFS、Kafka、Storage Blobs、Azure Data Lake Store、Azure Cosmos DB | HDFS、Kafka、Storage Blobs、Azure Data Lake Store、Azure Cosmos DB | サポートされるバインディング | Service Bus、Storage Queues、Storage Blobs、Event Hubs、WebHooks、Azure Cosmos DB、Files |
処理機能
機能 | Azure Stream Analytics | Spark Streaming を使用する HDInsight | Azure Databricks における Apache Spark | Azure Functions | Azure App Service WebJobs |
---|---|---|---|---|---|
組み込みのテンポラル/ウィンドウの サポート | はい | イエス | はい | いいえ | いいえ |
入力データ形式 | Avro、JSON または CSV、UTF-8 エンコード | カスタム コードを使用する任意の形式 | カスタム コードを使用する任意の形式 | カスタム コードを使用する任意の形式 | |
スケーラビリティ | クエリ パーティション | クラスターのサイズによる制限 | Databricks クラスターのスケール構成による制限 | 並列処理される最大 200 の関数アプリ インスタンス | App Service プランの容量による制限 |
遅延着信と順不同のイベントの処理 | はい | イエス | はい | いいえ | いいえ |
共同作成者
この記事は、Microsoft によって保守されています。 当初の寄稿者は以下のとおりです。
プリンシパル作成者:
- Zoiner Tejada | CEO 兼アーキテクト
次のステップ
- App Service の概要
- Azure Functions を調べる
- Azure Stream Analytics の使用
- 高度なストリーミング データ変換を実行する
- HDInsight のクラスターを設定する
- Azure Databricks で Apache Spark を使用する