Azure Event Hubs: ネイティブ Apache Kafka をサポートするリアルタイム データ ストリーミング プラットフォーム
Azure Event Hubs はクラウドにあるネイティブのデータ ストリーミング サービスで、任意のソースから任意の宛先に短い待機時間で、1 秒あたり数百万個のイベントをストリーミングできます。 Event Hubs は Apache Kafka と互換性があります。 コードを変更することなく既存の Kafka ワークロードを実行できます。
企業は Event Hubs を使用して、ストリーミング データの取り込みと格納を行うことができます。 ストリーミング データを使用することで、企業は貴重な分析情報を得て、リアルタイム分析を推進し、イベントの発生に応じて対応できます。 このデータを使用して、全体的な効率とカスタマー エクスペリエンスを向上させることができます。
Event Hubs は、Azure 上に構築するすべてのイベント ストリーミング ソリューションに推奨されるイベント インジェスト レイヤーです。 これは、Azure 内外のデータ サービスや分析サービスと統合して、次のユース ケースに対応する完全なデータ ストリーミング パイプラインを構築します。
- Azure Stream Analytics を使用してイベント ハブからのデータを処理することで、リアルタイムの分析情報を生成します。
- Azure Data Explorer を使用してストリーミング データを分析および探索する。
- Event Hubs からのストリーミング データ上で実行される独自のクラウド ネイティブ アプリケーション、関数、またはマイクロサービスを作成する。
- 組み込みの Azure スキーマ レジストリを使用したスキーマ検証でイベントをストリーミングして、ストリーミング データの品質と互換性を確保します。
主な機能
次のセクションで、Azure Event Hubs の主要な機能について説明します。
Azure Event Hubs で Apache Kafka を使用する
Event Hubs は、Advanced Message Queuing Protocol (AMQP)、Apache Kafka、HTTPS プロトコルをネイティブにサポートするマルチプロトコル イベント ストリーミング エンジンです。 Apache Kafka がサポートされているため、コードを変更することなく、Kafka ワークロードを Event Hubs に取り込むことができます。 独自の Kafka クラスターを設定、構成、管理したり、Azure にネイティブではない "サービスとしての Kafka" オファリングを使用したりする必要はありません。
Event Hubs は、クラウド ネイティブ ブローカー エンジンとして構築されています。 そのため、Kafka ワークロード実行時のパフォーマンスとコスト効率が高く、運用上のオーバーヘッドも発生しません。
詳細については、Apache Kafka 用の Azure Event Hubs に関するページを参照してください。
Event Hubs のスキーマ レジストリ
Event Hubs の Azure スキーマ レジストリには、イベント ストリーミング アプリケーションのスキーマを管理するための一元化されたリポジトリが用意されています。 スキーマ レジストリには、すべての Event Hubs 名前空間が無料で用意されています。 これは、Kafka アプリケーションまたは Event Hubs の SDK ベースのアプリケーションと統合します。
スキーマ レジストリにより、イベント プロデューサーとコンシューマー間でデータの互換性と一貫性が確保されます。 これによりスキーマの進化、検証、ガバナンスが可能になり、効率的なデータ交換と相互運用性が促進されます。
スキーマ レジストリは、既存の Kafka アプリケーションと統合し、Avro や JSON スキーマなどの複数のスキーマ形式をサポートします。
詳細については、Event Hubs の Azure スキーマ レジストリ に関するページを参照してください。
Stream Analytics を使用したストリーミング イベントのリアルタイム処理
Event Hubs は Azure Stream Analytics と統合して、リアルタイムのストリーム処理を可能にします。 組み込みのノーコード エディターを使用すると、コードを記述せずにドラッグ アンド ドロップ機能を使用して Stream Analytics ジョブを開発できます。
また、開発者が SQL ベースの Stream Analytics クエリ言語を使用してリアルタイム ストリーム処理を実行し、ストリーミング データを分析するためのさまざまな関数を利用することもできます。
詳細については、目次の Azure Stream Analytics 統合セクションの記事を参照してください。
Azure Data Explorer を使用してストリーミング データを探索する
Azure Data Explorer はビッグ データ分析のためのフル マネージド プラットフォームで、ハイ パフォーマンスを実現し、ほぼリアルタイムで大量のデータを分析することができます。 Event Hubs と Azure Data Explorer を統合することで、ストリーミング データのほぼリアルタイムの分析と探索を実行できます。
詳細については、イベント ハブから Azure Data Explorer へのデータの取り込みに関するページを参照してください。
Azure Functions、SDK、Kafka エコシステム
Event Hubs を使用すると、ストリームの取り込み、バッファー、格納、処理をリアルタイムで行い、実用的な分析情報を取得できます。 Event Hubs は、パーティション分割されたコンシューマー モデルを使います。 これは、複数のアプリケーションがストリームを同時に処理することを可能にし、処理の速度を制御できるようにします。 Event Hubs はサーバーレス アーキテクチャのために Azure Functions とも統合します。
業界標準の AMQP 1.0 プロトコルに対して、広範なエコシステムを利用できます。 .NET、Java、Python、JavaScript などの言語で SDK を利用できるため、Event Hubs でストリームの処理を開始できます。 サポートされているすべてのクライアント言語が、低レベルの統合を提供します。
このエコシステムは、Azure Functions、Azure Spring Apps、Kafka コネクタ、および Apache Spark や Apache Flink などの他のデータ分析プラットフォームやテクノロジとも統合できます。
柔軟でコスト効率の高いイベント ストリーミング
Standard、Premium、Dedicated などの、Event Hubs のさまざまなレベル経由で、柔軟でコスト効率の高いイベント ストリーミングを利用できます。 これらのオプションは、数 MB/秒から数 GB/秒までのデータ ストリーミング ニーズに対応します。要件に適合するものを選択できます。
拡張性
Event Hubs の利用は、メガバイト単位のデータ ストリームで開始し、ギガバイトまたはテラバイトまで拡張できます。 自動インフレ機能は、使用状況のニーズに合わせてスループット ユニット数または処理ユニット数をスケーリングするために利用できるオプションの 1 つです。
大きなメッセージのストリーミングをサポートします
ほとんどのストリーミング シナリオでは、データは軽量 (通常は 1 MB 未満) で、高スループットであることが特徴です。 メッセージをより小さなセグメントに分割できない場合もあります。 Event Hubs は、セルフサービスのスケーラブルな専用クラスターを使用して、追加料金なしで最大 20 MB のイベントに対応できます。 この機能により Event Hubs は、ビジネス運用が中断されないように、さまざまなメッセージ サイズを処理できます。 詳細については、「Azure Event Hubs を使って大きいメッセージを送受信する」を参照してください。
長期保有とバッチ分析のためにストリーミング データをキャプチャする
長期保有またはマイクロ バッチ処理のために、ほぼリアルタイムで Azure Blob Storage または Azure Data Lake Storage にデータをキャプチャします。 この動作は、リアルタイム分析の派生に使用するものと同じストリーム上で実現できます。 イベント データをキャプチャするための設定に時間はかかりません。
しくみ
Event Hubs は、時間保持バッファーを備えた統合イベント ストリーミング プラットフォームを提供し、イベント プロデューサーをイベント コンシューマーから切り離します。 プロデューサー アプリケーションとコンシューマー アプリケーションは、複数のプロトコル経由で大規模なデータ インジェストを実行できます。
次の図に、Event Hubs アーキテクチャの主要コンポーネントを示します。
Event Hubs の主要な機能コンポーネントは次のとおりです。
- プロデューサー アプリケーション: このアプリケーションは、Event Hubs SDK または Kafka プロデューサー クライアントを使用して、イベント ハブにデータを取り込むことができます。
- 名前空間: 1 つ以上のイベント ハブまたは Kafka トピックの管理コンテナーです。 ストリーミング容量の割り当て、ネットワーク セキュリティの構成、geo ディザスター リカバリーの有効化などの管理タスクは、名前空間レベルで処理されます。
- Event Hubs/Kafka トピック: Event Hubs では、イベントをイベント ハブまたは Kafka トピックにまとめることができます。 これは追加専用の分散ログで、1 つ以上のパーティションで構成できます。
- パーティション: これは、イベント ハブのスケーリングに使用されます。 これは高速道路の車線のようなものです。 ストリーミング スループットを増やす必要がある場合は、パーティションを追加できます。
- コンシューマー アプリケーション: このアプリケーションは、イベント ログをシークし、コンシューマー オフセットを維持することによりデータを使用できます。 コンシューマーには、Kafka コンシューマー クライアントまたは Event Hubs SDK クライアントを指定できます。
- コンシューマー グループ: このコンシューマー インスタンスの論理グループは、イベント ハブまたは Kafka トピックからデータを読み取ります。 こうすることで、複数のコンシューマーが、イベント ハブ内の同じストリーミング データを、独自のペースで独自のオフセットによって別々に読み取ることができます。
関連するコンテンツ
Event Hubs を使い始めるには、次のクイックスタートを参照してください。
Event Hubs SDK (AMQP) を使用してデータをストリーミングする
次のサンプルのいずれかを使用して、SDK を使って Event Hubs にデータをストリーミングできます。
Apache Kafka を使用してデータをストリーミングする
次のサンプルを使用して、Kafka アプリケーションから Event Hubs にデータをストリーミングできます。
スキーマ レジストリを使用した Kafka の検証
Event Hubs スキーマ レジストリを使用して、イベント ストリーミング アプリケーションのスキーマ検証を実行できます。