Apache Kafka アプリケーションから Azure Event Hubs を使用するUse Azure Event Hubs from Apache Kafka applications

Event Hubs は、独自の Kafka クラスターを実行する代わりに、既存の Kafka ベースのアプリケーションが使用できる Kafka エンドポイントを提供します。Event Hubs provides a Kafka endpoint that can be used by your existing Kafka based applications as an alternative to running your own Kafka cluster. Event Hubs は、Apache Kafka 1.0 以降をサポートしており、MirrorMaker を含む既存の Kafka アプリケーションに対応します。Event Hubs supports Apache Kafka protocol 1.0 and later, and works with your existing Kafka applications, including MirrorMaker.

Kafka 用 Event Hubs で提供されるものWhat does Event Hubs for Kafka provide?

Kafka 機能用 Event Hubs は、Azure Event Hubs 上で、Kafka トピックに対する読み取りと書き込みの両方について、Kafka バージョン 1.0 以降とバイナリ互換性のあるプロトコル ヘッドを提供します。The Event Hubs for Kafka feature provides a protocol head on top of Azure Event Hubs that is binary compatible with Kafka versions 1.0 and later for both reading from and writing to Kafka topics. コードを変更する必要はなく、構成の最小限の変更だけで、アプリケーションから Kafka エンドポイントを使い始めることができます。You may start using the Kafka endpoint from your applications with no code change but a minimal configuration change. Kafka クラスターを指すのではなく、イベント ハブによって公開されている Kafka エンドポイントを指すように、構成の接続文字列を更新します。You update the connection string in configurations to point to the Kafka endpoint exposed by your event hub instead of pointing to your Kafka cluster. その後、Kafka プロトコルを使用するアプリケーションから Event Hubs へのイベントのストリーミングを開始できます。Then, you can start streaming events from your applications that use the Kafka protocol into Event Hubs. この統合により、現在プレビュー段階の Kafka 接続ようなフレームワークもサポートされます。This integration also supports frameworks like Kafka Connect, which is currently in preview.

Kafka と Event Hubs は、概念的にはほぼ同じものです。これらはどちらも、ストリーミング データ用に構築されたパーティション分割型のログです。Conceptually Kafka and Event Hubs are nearly identical: they're both partitioned logs built for streaming data. 次の表に、Kafka の概念と Event Hubs の概念のマッピングを示します。The following table maps concepts between Kafka and Event Hubs.

Kafka と Event Hubs の概念のマッピングKafka and Event Hub conceptual mapping

Kafka での概念Kafka Concept Event Hubs での概念Event Hubs Concept
クラスターCluster 名前空間Namespace
トピックTopic イベント ハブEvent Hub
PartitionPartition PartitionPartition
コンシューマー グループConsumer Group コンシューマー グループConsumer Group
OffsetOffset OffsetOffset

Kafka と Event Hubs の主な違いKey differences between Kafka and Event Hubs

Apache Kafka は、選択した任意の場所で実行できるソフトウェアであるのに対して、Event Hubs は、Azure Blob Storage に似たクラウド サービスです。While Apache Kafka is software, which you can run wherever you choose, Event Hubs is a cloud service similar to Azure Blob Storage. 管理するサーバーやネットワークはなく、構成するブローカーがありません。There are no servers or networks to manage and no brokers to configure. ユーザーは名前空間を作成します。それが、トピックが存在する FQDN であり、次に、その名前空間内に Event Hubs またはトピックを作成します。You create a namespace, which is an FQDN in which your topics live, and then create Event Hubs or topics within that namespace. Event Hubs と名前空間について詳しくは、「Event Hubs の機能」をご覧ください。For more information about Event Hubs and namespaces, see Event Hubs features. クラウド サービスとしての Event Hubs は、単一の安定した仮想 IP アドレスをエンドポイントとして使用するため、クライアントは、ブローカーやクラスター内のマシンについて知っておく必要はありません。As a cloud service, Event Hubs uses a single stable virtual IP address as the endpoint, so clients don't need to know about the brokers or machines within a cluster.

Event Hubs のスケールは、購入するスループット単位の数によって制御されます。各スループット単位では、1 秒あたり 1 MB、または受信の 1 秒あたり 1,000 イベントを利用できます。Scale in Event Hubs is controlled by how many throughput units you purchase, with each throughput unit entitling you to 1 MB per second, or 1000 events per second of ingress. 既定では、Event Hubs は上限に達すると自動インフレ機能によってスループット ユニットをスケールアップします。この機能は Kafka 機能用 Event Hubs でも働きます。By default, Event Hubs scales up throughput units when you reach your limit with the Auto-Inflate feature; this feature also works with the Event Hubs for Kafka feature.

セキュリティと認証Security and authentication

Kafka 用 Event Hubs からイベントを発行または使用するたびに、クライアントでは、Event Hubs リソースへのアクセスが試行されます。Every time you publish or consume events from an Event Hubs for Kafka, your client is trying to access the Event Hubs resources. 認可されたエンティティを使用してリソースがアクセスされていることを確認する必要があります。You want to ensure that the resources are accessed using an authorized entity. クライアントで Apache Kafka プロトコルを使用している場合、SASL のメカニズムを使用して認証と暗号化のための構成を設定できます。When using Apache Kafka protocol with your clients, you can set your configuration for authentication and encryption using the SASL mechanisms. Kafka 用 Event Hubs を使用するには、TLS 暗号化が必要となります (Event Hubs では転送中のデータがすべて TLS で暗号化されるため)。When using Event Hubs for Kafka requires the TLS-encryption (as all data in transit with Event Hubs is TLS encrypted). これは、構成ファイルで SASL_SSL オプションを指定することによって実現できます。It can be done specifying the SASL_SSL option in your configuration file.

Azure Event Hubs には、セキュリティで保護されたリソースへのアクセスを承認するためのオプションが複数用意されています。Azure Event Hubs provides multiple options to authorize access to your secure resources.

  • OAuthOAuth
  • Shared Access Signature (SAS)Shared access signature (SAS)

OAuthOAuth

Event Hubs は、Azure Active Directory (Azure AD) と連携するため、Azure AD の OAuth 2.0 に準拠した一元的な承認サーバーを利用できます。Event Hubs integrates with Azure Active Directory (Azure AD), which provides a OAuth 2.0 compliant centralized authorization server. Azure AD では、ロールベースのアクセス制御 (RBAC) を使用して、粒度の細かいアクセス許可をクライアントの ID に与えることができます。With Azure AD, you can use role-based access control (RBAC) to grant fine grained permissions to your client identities. protocol に SASL_SSL を、mechanism に OAUTHBEARER を指定すれば、この機能を Kafka クライアントで使用することができます。You can use this feature with your Kafka clients by specifying SASL_SSL for the protocol and OAUTHBEARER for the mechanism. RBAC のロールとレベルを使用したアクセスのスコープ設定について詳しくは、Azure AD によるアクセスの承認に関するページを参照してください。For details about RBAC roles and levels for scoping access, see Authorize access with Azure AD.

bootstrap.servers=NAMESPACENAME.servicebus.windows.net:9093
security.protocol=SASL_SSL
sasl.mechanism=OAUTHBEARER
sasl.jaas.config=org.apache.kafka.common.security.oauthbearer.OAuthBearerLoginModule required;
sasl.login.callback.handler.class=CustomAuthenticateCallbackHandler;

Shared Access Signature (SAS)Shared Access Signature (SAS)

Event Hubs には、Shared Access Signature (SAS) も用意されており、Kafka 用 Event Hubs リソースへの委任アクセスを実現することができます。Event Hubs also provides the Shared Access Signatures (SAS) for delegated access to Event Hubs for Kafka resources. OAuth 2.0 トークンベースのメカニズムを使用したアクセス承認の方が、SAS よりもセキュリティが高く、使いやすさの点でも有利です。Authorizing access using OAuth 2.0 token-based mechanism provides superior security and ease of use over SAS. また、ACL ベースの承認はユーザーが維持、管理する必要がありますが、組み込みロールであれば ACL ベースの承認は必要ありません。The built-in roles can also eliminate the need for ACL-based authorization, which has to be maintained and managed by the user. protocol に SASL_SSL を、mechanism に PLAIN を指定すれば、この機能を Kafka クライアントで使用することができます。You can use this feature with your Kafka clients by specifying SASL_SSL for the protocol and PLAIN for the mechanism.

bootstrap.servers=NAMESPACENAME.servicebus.windows.net:9093
security.protocol=SASL_SSL
sasl.mechanism=PLAIN
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="{YOUR.EVENTHUBS.CONNECTION.STRING}";

サンプルSamples

SAS または OAuth を使用してイベント ハブを作成しアクセスする手順のチュートリアルについては、「クイックスタート: Kafka プロトコルを使用した Event Hubs によるデータ ストリーミング」を参照してください。For a tutorial with step-by-step instructions to create an event hub and access it using SAS or OAuth, see Quickstart: Data streaming with Event Hubs using the Kafka protocol.

Kafka 用 Event Hubs で OAuth を使用する方法を紹介したその他のについては、GitHub 上のサンプルを参照してください。For more samples that show how to use OAuth with Event Hubs for Kafka, see samples on GitHub.

Kafka で使用できるその他の Event Hubs 機能Other Event Hubs features available for Kafka

Kafka 機能用 Event Hubs では、あるプロトコルで書き込みを、別のプロトコルで読み取りを行えます。そのため、現在の Kafka プロデューサーは Kafka による発行を続けることができます。また、Event Hub で Azure Stream Analytics や Azure Functions などのリーダーを追加できます。The Event Hubs for Kafka feature enables you to write with one protocol and read with another, so that your current Kafka producers can continue publishing via Kafka, and you can add readers with Event Hubs, such as Azure Stream Analytics or Azure Functions. さらに、CaptureGeo ディザスター リカバリーなどの Event Hubs 機能も、Kafka 機能用 Event Hubs で動作します。Additionally, Event Hubs features such as Capture and Geo Disaster-Recovery also work with the Event Hubs for Kafka feature.

まだサポートされていない機能Features that are not yet supported

まだサポートされていない Kafka の機能の一覧を次に示します。Here is the list of Kafka features that are not yet supported:

  • べき等プロデューサーIdempotent producer
  • トランザクションTransaction
  • 圧縮Compression
  • サイズ ベースのリテンション期間Size-based retention
  • ログの圧縮Log compaction
  • 既存トピックへのパーティションの追加Adding partitions to an existing topic
  • HTTP Kafka API のサポートHTTP Kafka API support
  • Kafka StreamsKafka Streams

次のステップNext steps

この記事では、Kafka 用 Event Hubs の概要について説明しました。This article provided an introduction to Event Hubs for Kafka. 詳細については、Azure Event Hubs 用 Apache Kafka 開発者ガイドを参照してください。To learn more, see Apache Kafka developer guide for Azure Event Hubs.