Apache Kafka は、発行-サブスクライブ アーキテクチャを実装する高度にスケーラブルでフォールト トレラントな分散メッセージング システムです。 これは、IoT やリアルタイム ログ監視システムなどのリアルタイム ストリーミング シナリオでインジェスト レイヤーとして使われます。 また、Kappa アーキテクチャで不変の追加専用データ ストアとしても使われるようになってきました。
Apache®、Apache Spark®、Apache Hadoop®、Apache HBase、Apache Storm®、Apache Sqoop®、Apache Kafka®、および炎のロゴは、Apache Software Foundation の米国およびその他の国における登録商標または商標です。 これらのマークを使用することが、Apache Software Foundation による保証を意味するものではありません。
移行のアプローチ
この記事では、Kafka を Azure に移行する場合のさまざまな方法について説明します。
- Kafka を Azure サービスとしてのインフラストラクチャ (IaaS) に移行する
- Kafka を Kafka 用 Azure Event Hubs に移行する
- Azure HDInsight での Kafka の移行
- HDInsight 上で Kafka と AKS を使用する
使用するものを決定するための決定フローチャートを次に示します。
Kafka を Azure サービスとしてのインフラストラクチャ (IaaS) に移行する
Kafka を Azure IaaS に移行する 1 つの方法については、「Ubuntu VM 上の Kafka」を参照してください。
Kafka を Kafka 用 Azure Event Hubs に移行する
Event Hubs には、Apache Kafka プロデューサーおよびコンシューマー API と互換性のあるエンドポイントが用意されています。 このエンドポイントは、ほとんどの Apache Kafka クライアント アプリケーションで使用できるため、Azure で Kafka クラスターを実行する代わりになります。 エンドポイントは、バージョン 1.0 以降の API を使用するクライアントをサポートします。 この機能の詳細については、Azure Event Hubs for Apache Kafka の概要に関するページを参照してください。
Azure Event Hubs を使用できるように Apache Kafka アプリケーションを移行する方法については、「Apache Kafka エコシステム用 Azure Event Hubs への移行」を参照してください。
Kafka と Event Hubs の機能の違い
Kafka と Event Hubs が似ている点 | Kafka と Event Hubs が違う点 |
---|---|
どちらもパーティションを使用します。 | 以下の領域で違いがあります。 |
パーティションが独立しています。 | • PaaS とソフトウェア |
どちらもクライアント側カーソルの概念を使用しています。 | • パーティション分割 |
どちらもきわめて高いワークロードに合わせてスケーリングできます。 | • API |
概念的にそれらはほぼ同じです。 | • ランタイム |
どちらも受信に HTTP プロトコルを使用しません。 | • プロトコル |
• 持続性 | |
• セキュリティ | |
• 調整 |
パーティション分割の違い
Kafka | Event Hubs |
---|---|
スケールはパーティション数によって管理されます。 | スケールはスループット ユニットによって管理されます。 |
マシン間でパーティションを負荷分散する必要があります。 | 負荷分散は自動です。 |
分割とマージを使用して手動で再シャード化する必要があります。 | 再パーティション分割は必要ありません。 |
持続性の違い
Kafka | Event Hubs |
---|---|
既定で揮発性 | 常に持続的 |
ACK の後にレプリケート | ACK の前にレプリケート |
ディスクとクォーラムに依存 | ストレージによって提供 |
セキュリティの違い
Kafka | Event Hubs |
---|---|
SSL と SASL | SAS と SASL/PLAIN RFC 4618 |
ファイルに似た ACL | ポリシー |
オプションの転送暗号化 | 必須 TLS |
ユーザー ベース | トークン ベース (無制限) |
その他の相違点
Kafka | Event Hubs |
---|---|
Kafka では調整が行われません。 | Event Hubs では調整がサポートされています。 |
Kafka では専用プロトコルが使用されます。 | Event Hubs では AMQP 1.0 プロトコルが使用されます。 |
Kafka では送信に HTTP が使用されません。 | Event Hubs では HTTP 送信とバッチ送信が使用されます。 |
Azure HDInsight での Kafka の移行
Kafka を Azure HDInsight 上の Kafka に移行できます。 詳細については、「Azure HDInsight での Apache Kafka の概要」を参照してください。
HDInsight 上で Kafka と AKS を使用する
「Azure Kubernetes Service で HDInsight 上の Apache Kafka を使用する」を参照してください。
Kafka データの移行
Kafka の MirrorMaker ツールを使用して、クラスターから別のクラスターにトピックをレプリケートできます。 この手法は、Kafka クラスターのプロビジョニング後にデータを移行するのに役立つ可能性があります。 詳細については、「MirrorMaker を使用して HDInsight 上の Kafka に Apache Kafka トピックをレプリケートする」を参照してください。
ミラーリングを使用する移行アプローチを次に示します。
- プロデューサーを最初に移動してから、コンシューマーを移動します。 プロデューサーの移行時は、ソース Kafka で新しいメッセージの生成が妨げられます。
- ソース Kafka で残りのすべてのメッセージが使用された後に、コンシューマーを移行できます。
実装手順を次に示します。
- プロデューサー クライアントの Kafka 接続アドレスを、新しい Kafka インスタンスをポイントするように変更します。
- プロデューサー ビジネス サービスを再起動し、新しいメッセージを新しい Kafka インスタンスに送信します。
- ソース Kafka 内のデータが使用されるまで待ちます。
- コンシューマー クライアントの Kafka 接続アドレスを、新しい Kafka インスタンスをポイントするように変更します。
- コンシューマー ビジネス サービスを再起動し、新しい Kafka インスタンスからのメッセージを使用します。
- コンシューマーが新しい Kafka インスタンスからのデータの取得に成功したことを確認します。
Kafka クラスターを監視する
Azure Monitor ログを使用して、HDInsight 上の Apache Kafka によって生成されるログを分析できます。 詳細については、「HDInsight で Apache Kafka のログを分析する」を参照してください。
Apache Kafka Streams API
Kafka Streams API により、ほぼリアルタイムでデータを処理でき、データを結合および集計する機能が提供されます。 知る価値のあるさらに多くの API の機能があります。 詳細については、「Kafka ストリームの概要: ストリーム処理を簡単にする - Confluent」を参照してください。
Microsoft と Confluent のパートナーシップ
Confluent は、Apache Kafka 用のクラウドネイティブ サービスを提供しています。 Microsoft と Confluent には戦略的提携があります。 詳細については、次を参照してください。
共同作成者
この記事は、Microsoft によって保守されています。 当初の寄稿者は以下のとおりです。
プリンシパルの作成者:
- Namrata Maheshwary | シニア クラウド ソリューション アーキテクト
- Raja N | ディレクター、カスタマー サクセス
- Hideo Takagi | クラウド ソリューション アーキテクト
- Ram Yerrabotu | シニア クラウド ソリューション アーキテクト
その他の共同作成者:
- Ram Baskaran | シニア クラウド ソリューション アーキテクト
- Jason Bouska | シニア ソフトウェア エンジニア
- Eugene Chung | シニア クラウド ソリューション アーキテクト
- Pawan Hosatti | シニア クラウド ソリューション アーキテクト - エンジニアリング
- Daman Kaur | クラウド ソリューション アーキテクト
- Danny Liu | シニア クラウド ソリューション アーキテクト - エンジニアリング
- Jose Mendez | シニア クラウド ソリューション アーキテクト
- Ben Sadeghi | シニア スペシャリスト
- Sunil Sattiraju | シニア クラウド ソリューション アーキテクト
- Amanjeet Singh | プリンシパル プログラム マネージャー
- Nagaraj Seeplapudur Venkatesan | シニア クラウド ソリューション アーキテクト - エンジニアリング
パブリックでない LinkedIn プロファイルを表示するには、LinkedIn にサインインします。
次の手順
Azure 製品の概要
- Azure Data Lake Storage Gen2 の概要
- Apache Spark とは - Azure HDInsight
- Azure HDInsight の Apache Hadoop の概要
- Azure HDInsight での Apache HBase の概要
- Azure HDInsight での Apache Kafka の概要
- Azure HDInsight のエンタープライズ セキュリティの概要
Azure 製品のリファレンス
- Microsoft Entra のドキュメント
- Azure Cosmos DB のドキュメント
- Azure Data Factory のドキュメント
- Azure Databricks のドキュメント
- Azure Event Hubs のドキュメント
- Azure Functions のドキュメント
- Azure HDInsight のドキュメント
- Microsoft Purview データ ガバナンスに関するドキュメント
- Azure Stream Analytics のドキュメント
- Azure Synapse Analytics
その他
- Azure HDInsight 用の Enterprise セキュリティ パッケージ
- HDInsight 上の Apache Hadoop 用の Java MapReduce プログラムを開発する
- HDInsight の Hadoop での Apache Sqoop の使用
- Apache Spark ストリーミングの概要
- 構造化ストリーミングのチュートリアル
- Apache Kafka アプリケーションから Azure Event Hubs を使用する