HDInsight での Apache Kafka とはWhat is Apache Kafka on HDInsight?

Apache Kafka はオープン ソースの分散ストリーム プラットフォームで、リアルタイムのストリーミング データ パイプラインとアプリケーションの構築に使用できます。Apache Kafka is an open-source distributed streaming platform that can be used to build real-time streaming data pipelines and applications. Kafka は、名前付きデータ ストリームへの公開および購読ができる、メッセージ キューと同様のメッセージ ブローカー機能も提供しています。Kafka also provides message broker functionality similar to a message queue, where you can publish and subscribe to named data streams.

以下に、HDInsight 上の Kafka の固有の特性を示します。The following are specific characteristics of Kafka on HDInsight:

  • これは、簡単な構成プロセスを提供する管理されたサービスです。It is a managed service that provides a simplified configuration process. その結果は、Microsoft によってテスト済みのサポートされている構成になります。The result is a configuration that is tested and supported by Microsoft.

  • Microsoft は、kafka の稼働時間に対し、99.9 % のサービス レベル アグリーメント (SLA) を提供しています。Microsoft provides a 99.9% Service Level Agreement (SLA) on Kafka uptime. 詳細については、「HDInsight の SLA」を参照してください。For more information, see the SLA information for HDInsight document.

  • Kafka のバッキング ストアとして Azure Managed Disks を使用します。It uses Azure Managed Disks as the backing store for Kafka. Managed Disks は、Kafka ブローカーあたり最大 16 TB を提供できます。Managed Disks can provide up to 16 TB of storage per Kafka broker. HDInsight 上の Kafka でのマネージド ディスクの構成について詳しくは、「HDInsight 上の Apache Kafka 用に記憶域とスケーラビリティを構成する」をご覧ください。For information on configuring managed disks with Kafka on HDInsight, see Increase scalability of Kafka on HDInsight.

    マネージド ディスクについて詳しくは、「Azure Managed Disks の概要」をご覧ください。For more information on managed disks, see Azure Managed Disks.

  • Kafka はラックの 1 次元ビューで設計されています。Kafka was designed with a single dimensional view of a rack. Azure は、更新ドメイン (UD) と障害ドメイン (FD) の 2 次元にラックを分割します。Azure separates a rack into two dimensions - Update Domains (UD) and Fault Domains (FD). Microsoft は、複数の UD と FD の間で Kafka のパーティションとレプリカを再調整するツールを提供しています。Microsoft provides tools that rebalance Kafka partitions and replicas across UDs and FDs.

    詳細については、HDInsight 上の Kafka による高可用性に関するページを参照してください。For more information, see High availability with Kafka on HDInsight.

  • HDInsight を使用すると、クラスターの作成後に、worker ノード (Kafka ブローカーをホストするノード) の数を変更することができます。HDInsight allows you to change the number of worker nodes (which host the Kafka-broker) after cluster creation. スケーリングは、Azure Portal、Azure PowerShell、およびその他の Azure 管理インターフェイスで実行できます。Scaling can be performed from the Azure portal, Azure PowerShell, and other Azure management interfaces. Kafka では、スケーリング操作の後で、パーティションのレプリカを再調整する必要があります。For Kafka, you should rebalance partition replicas after scaling operations. パーティションを再調整することで、Kafka は新しい数のワーカー ノードを活用することができます。Rebalancing partitions allows Kafka to take advantage of the new number of worker nodes.

    詳細については、HDInsight 上の Kafka による高可用性に関するページを参照してください。For more information, see High availability with Kafka on HDInsight.

  • Azure Log Analytics を使用して、HDInsight 上の Kafka を監視できます。Azure Log Analytics can be used to monitor Kafka on HDInsight. Log Analytics は、ディスクおよび NIC のメトリック、Kafka からの JMX メトリックなど、仮想マシン レベルの情報を表示します。Log Analytics surfaces virtual machine level information, such as disk and NIC metrics, and JMX metrics from Kafka.

    詳細については、HDInsight 上の Kafka のログの分析に関するページを参照してください。For more information, see Analyze logs for Kafka on HDInsight.

HDInsight アーキテクチャ上の KafkaKafka on HDInsight architecture

次の図は、コンシューマー グループ、パーティション分割、レプリケーションを使ってイベントの並列読み取りとフォールト トレランスを実現する標準的な Kafka の構成を示しています。The following diagram shows a typical Kafka configuration that uses consumer groups, partitioning, and replication to offer parallel reading of events with fault tolerance:

Kafka クラスター構成の図

Apache ZooKeeper は Kafka クラスターの状態を管理します。Apache ZooKeeper manages the state of the Kafka cluster. Zookeeper は同時、耐障害性、および待機時間の短いトランザクション用に作成されています。Zookeeper is built for concurrent, resilient, and low-latency transactions.

Kafka では、トピックにレコード (データ) が格納されます。Kafka stores records (data) in topics. レコードは、プロデューサーによって生成され、コンシューマーによって消費されます。Records are produced by producers, and consumed by consumers. プロデューサーは Kafka ブローカーにレコードを送信します。Producers send records to Kafka brokers. HDInsight クラスターの各ワーカー ノードが、Kafka のブローカーです。Each worker node in your HDInsight cluster is a Kafka broker.

トピックは、ブローカー間でレコードを分割します。Topics partition records across brokers. レコードの使用時に、パーティションあたり最大 1 つのコンシューマーを使用して、データの並列処理を実現できます。When consuming records, you can use up to one consumer per partition to achieve parallel processing of the data.

レプリケーションによって複数ノードにパーティションが複製されて、ノード (ブローカー) の機能不全に対する保護措置が講じられています。Replication is employed to duplicate partitions across nodes, protecting against node (broker) outages. (L) で示されたパーティションは、指定されたパーティションのリーダーです。A partition denoted with an (L) in the diagram is the leader for the given partition. プロデューサー トラフィックは、ZooKeeper によって管理された状態に基づいて、各ノードのリーダーにルーティングされます。Producer traffic is routed to the leader of each node, using the state managed by ZooKeeper.

HDInsight で Apache Kafka を使用する理由Why use Kafka on HDInsight?

以下に、HDInsight 上の Kafka を使用して実行できる一般的なタスクと パターンを示します。The following are common tasks and patterns that can be performed using Kafka on HDInsight:

  • Kafka データのレプリケーション: Kafka には、MirrorMaker ユーティリティが用意されています。このユーティリティは、Kafka クラスター間でデータをレプリケートします。Replication of Kafka data: Kafka provides the MirrorMaker utility, which replicates data between Kafka clusters.

    MirrorMaker の使用方法については、HDInsight 上の Kafka での Kafka トピックのレプリケートに関するページを参照してください。For information on using MirrorMaker, see Replicate Kafka topics with Kafka on HDInsight.

  • 発行-購読のメッセージング パターン: Kafka は、Kafka トピックにレコードを発行するためのプロデューサー API を提供します。Publish-subscribe messaging pattern: Kafka provides a Producer API for publishing records to a Kafka topic. コンシューマー API は、トピックの購読に使用されます。The Consumer API is used when subscribing to a topic.

    詳細については、HDInsight での Kafka の使用開始に関するページを参照してください。For more information, see Start with Kafka on HDInsight.

  • ストリーム処理: リアルタイムのストリーム処理には、通常、Kafka と共に Apache Storm または Spark が使用されます。Stream processing: Kafka is often used with Apache Storm or Spark for real-time stream processing. Kafka 0.10.0.0 (HDInsight バージョン 3.5 および 3.6) では、Storm や Spark を必要とせずに、ストリーミング ソリューションを構築できるストリーミング API が導入されました。Kafka 0.10.0.0 (HDInsight version 3.5 and 3.6) introduced a streaming API that allows you to build streaming solutions without requiring Storm or Spark.

    詳細については、HDInsight での Kafka の使用開始に関するページを参照してください。For more information, see Start with Kafka on HDInsight.

  • 水平スケール: Kafka は、HDInsight クラスター内のノード間でストリームを分割します。Horizontal scale: Kafka partitions streams across the nodes in the HDInsight cluster. コンシューマー プロセスを各パーティションと関連付けることにより、レコード使用時の負荷分散を実現することができます。Consumer processes can be associated with individual partitions to provide load balancing when consuming records.

    詳細については、HDInsight での Kafka の使用開始に関するページを参照してください。For more information, see Start with Kafka on HDInsight.

  • 順番どおりに処理: 各パーティション内で、レコードは、受信された順番にストリームに格納されます。In-order delivery: Within each partition, records are stored in the stream in the order that they were received. パーティションごとに 1 つのコンシューマー プロセスを関連付けることで、レコードが順番通りに確実に処理されるようになります。By associating one consumer process per partition, you can guarantee that records are processed in-order.

    詳細については、HDInsight での Kafka の使用開始に関するページを参照してください。For more information, see Start with Kafka on HDInsight.

ユース ケースUse cases

  • メッセージング: Kafka は発行-購読のメッセージ パターンをサポートするため、メッセージ ブローカーとしてよく使用されます。Messaging: Since it supports the publish-subscribe message pattern, Kafka is often used as a message broker.

  • アクティビティの追跡: Kafka ではレコードの受信順序のログ記録が提供されるため、アクティビティの追跡と再現に使用することができます。Activity tracking: Since Kafka provides in-order logging of records, it can be used to track and re-create activities. たとえば、Web サイト上またはアプリケーション内のユーザー アクションです。For example, user actions on a web site or within an application.

  • 集計: ストリーム処理を使用して異なるストリームからの情報を集計し、情報をまとめて運用データに一元化することができます。Aggregation: Using stream processing, you can aggregate information from different streams to combine and centralize the information into operational data.

  • 変換: ストリーム処理を使用して入力された複数のトピックからのデータを結合し、1 つまたは複数の出力トピックに変換することができます。Transformation: Using stream processing, you can combine and enrich data from multiple input topics into one or more output topics.

次の手順Next steps

次のリンクを使用することで、HDInsight で Apache Kafka を使用する方法を知ることができます。Use the following links to learn how to use Apache Kafka on HDInsight: