O que é Apache Kafka no HDInsight?What is Apache Kafka on HDInsight?

O Apache Kafka é uma plataforma de streaming distribuída de software livre que pode ser usada para compilar pipelines e aplicativos de dados de streaming em tempo real.Apache Kafka is an open-source distributed streaming platform that can be used to build real-time streaming data pipelines and applications. O Kafka também fornece funcionalidade de agente de mensagem semelhante a uma fila de mensagens, onde você pode publicar e assinar os fluxos de dados nomeados.Kafka also provides message broker functionality similar to a message queue, where you can publish and subscribe to named data streams.

Estas são as características específicas do Kafka no HDInsight:The following are specific characteristics of Kafka on HDInsight:

  • Ele é um serviço gerenciado que fornece um processo de configuração simplificado.It is a managed service that provides a simplified configuration process. O resultado é uma configuração testada e com suporte da Microsoft.The result is a configuration that is tested and supported by Microsoft.

  • A Microsoft fornece um SLA (Contrato de Nível de Serviço) de 99,9% de tempo de atividade no Kafka.Microsoft provides a 99.9% Service Level Agreement (SLA) on Kafka uptime. Para saber mais, veja o documento Informações de SLA para o HDInsight.For more information, see the SLA information for HDInsight document.

  • Ele usa o Azure Managed Disks como repositório de backup para Kafka.It uses Azure Managed Disks as the backing store for Kafka. O Managed Disks pode fornecer até 16 TB de armazenamento por agente do Kafka.Managed Disks can provide up to 16 TB of storage per Kafka broker. Para saber mais sobre como configurar discos gerenciados com o Kafka no HDInsight, confira Aumentar a escalabilidade do Apache Kafka no HDInsight.For information on configuring managed disks with Kafka on HDInsight, see Increase scalability of Apache Kafka on HDInsight.

    Para saber mais sobre discos gerenciados, veja Azure Managed Disks.For more information on managed disks, see Azure Managed Disks.

  • O Kafka foi criado com uma exibição única e bidimensional de um rack.Kafka was designed with a single dimensional view of a rack. O Azure separa um rack em duas dimensões: UD (domínios de atualização) e FD (domínios de falha).Azure separates a rack into two dimensions - Update Domains (UD) and Fault Domains (FD). A Microsoft fornece ferramentas que redistribuem partições e réplicas do Kafka entre UDs e FDs.Microsoft provides tools that rebalance Kafka partitions and replicas across UDs and FDs.

    Para saber mais, confira Alta disponibilidade com Apache Kafka no HDInsight.For more information, see High availability with Apache Kafka on HDInsight.

  • O HDInsight permite que você altere o número de nós de trabalho (que hospedam o agente do Kafka) após a criação do cluster.HDInsight allows you to change the number of worker nodes (which host the Kafka-broker) after cluster creation. O dimensionamento pode ser executado a partir do portal do Azure, do Azure PowerShell e de outras interfaces de gerenciamento do Azure.Scaling can be performed from the Azure portal, Azure PowerShell, and other Azure management interfaces. Para Kafka você deve redistribuir as réplicas de partição após as operações de dimensionamento.For Kafka, you should rebalance partition replicas after scaling operations. Redistribuir as partições permite ao Kafka aproveitar o novo número de nós de trabalho.Rebalancing partitions allows Kafka to take advantage of the new number of worker nodes.

    Para saber mais, confira Alta disponibilidade com Apache Kafka no HDInsight.For more information, see High availability with Apache Kafka on HDInsight.

  • Os logs do Azure Monitor podem ser usados para monitorar o Kafka no HDInsight.Azure Monitor logs can be used to monitor Kafka on HDInsight. Os logs do Azure Monitor expõem as informações do nível da máquina virtual, como o disco e as métricas NIC, além das métricas JMX do Kafka.Azure Monitor logs surfaces virtual machine level information, such as disk and NIC metrics, and JMX metrics from Kafka.

    Para saber mais, confira Analisar logs do Apache Kafka no HDInsight.For more information, see Analyze logs for Apache Kafka on HDInsight.

Arquitetura do Apache Kafka no HDInsightApache Kafka on HDInsight architecture

O diagrama a seguir mostra uma configuração típica de Kafka que usa grupos de consumidores, particionamento e a replicação oferece leitura paralela de eventos com tolerância a falhas:The following diagram shows a typical Kafka configuration that uses consumer groups, partitioning, and replication to offer parallel reading of events with fault tolerance:

Diagrama de configuração do cluster Kafka

O Apache ZooKeeper gerencia o estado do cluster Kafka.Apache ZooKeeper manages the state of the Kafka cluster. O Zookeeper foi criado para executar transações simultâneas, resilientes e de baixa latência.Zookeeper is built for concurrent, resilient, and low-latency transactions.

O Kafka armazena registros (dados) em tópicos.Kafka stores records (data) in topics. Os registros são produzidos por produtores e consumidos por consumidores.Records are produced by producers, and consumed by consumers. Os produtores enviam registros aos agentes do Kafka.Producers send records to Kafka brokers. Cada nó de trabalho no cluster HDInsight é um agente do Kafka.Each worker node in your HDInsight cluster is a Kafka broker.

Registros de partição de tópicos entre agentes.Topics partition records across brokers. Ao consumir registros, você pode usar um consumidor por partição a fim de alcançar o processamento paralelo dos dados.When consuming records, you can use up to one consumer per partition to achieve parallel processing of the data.

A replicação é utilizada para duplicar partições entre os nós, protegendo contra falhas de nó (agente).Replication is employed to duplicate partitions across nodes, protecting against node (broker) outages. Uma partição marcada com um (L) no diagrama é o líder da partição específica.A partition denoted with an (L) in the diagram is the leader for the given partition. O produtor tráfego é roteado para o preenchimento de cada nó, usando o estado gerenciado pelo ZooKeeper.Producer traffic is routed to the leader of each node, using the state managed by ZooKeeper.

Por que usar o Apache Kafka no HDInsight?Why use Apache Kafka on HDInsight?

Veja a seguir tarefas e padrões comuns que podem ser executadas usando Kafka no HDInsight:The following are common tasks and patterns that can be performed using Kafka on HDInsight:

  • Replicação de dados do Apache Kafka: O Kafka fornece o utilitário MirrorMaker, que replica os dados entre os clusters do Kafka.Replication of Apache Kafka data: Kafka provides the MirrorMaker utility, which replicates data between Kafka clusters.

    Para saber mais sobre como usar o MirrorMaker, confira Replicar tópicos do Apache Kafka com o Apache Kafka no HDInsight.For information on using MirrorMaker, see Replicate Apache Kafka topics with Apache Kafka on HDInsight.

  • Padrão de mensagens de publicação/assinatura: O Kafka fornece uma API de Produtor para publicação de registros em um tópico do Kafka.Publish-subscribe messaging pattern: Kafka provides a Producer API for publishing records to a Kafka topic. A API de Consumidor é usada na assinatura de um tópico.The Consumer API is used when subscribing to a topic.

    Para saber mais, confira Introdução ao Apache Kafka no HDInsight.For more information, see Start with Apache Kafka on HDInsight.

  • Processamento de fluxo: O Kafka é frequentemente usado com o Apache Storm ou o Spark para processamento de fluxo em tempo real.Stream processing: Kafka is often used with Apache Storm or Spark for real-time stream processing. O Kafka 0.10.0.0 (HDInsight versão 3.5 e 3.6) introduziu uma API de streaming que permite que você crie soluções de transmissão sem a necessidade do Storm ou do Spark.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.

    Para saber mais, confira Introdução ao Apache Kafka no HDInsight.For more information, see Start with Apache Kafka on HDInsight.

  • Escala horizontal: O Kafka particiona fluxos entre os nós no cluster HDInsight.Horizontal scale: Kafka partitions streams across the nodes in the HDInsight cluster. Os processos do Consumidor podem ser associados a partições individuais para fornecer balanceamento de carga ao consumir registros.Consumer processes can be associated with individual partitions to provide load balancing when consuming records.

    Para saber mais, confira Introdução ao Apache Kafka no HDInsight.For more information, see Start with Apache Kafka on HDInsight.

  • Entrega em ordem: Dentro de cada partição, os registros são armazenados no fluxo na ordem em que foram recebidos.In-order delivery: Within each partition, records are stored in the stream in the order that they were received. Ao associar um processo do consumidor por partição, você pode garantir que os registros sejam processados na ordem.By associating one consumer process per partition, you can guarantee that records are processed in-order.

    Para saber mais, confira Introdução ao Apache Kafka no HDInsight.For more information, see Start with Apache Kafka on HDInsight.

Casos de usoUse cases

  • Sistema de mensagens: Como ele dá suporte ao padrão de mensagem de publicação/assinatura, o Kafka geralmente é usado como um agente de mensagem.Messaging: Since it supports the publish-subscribe message pattern, Kafka is often used as a message broker.

  • Acompanhamento de atividades: Como o Kafka fornece o log em ordem de registros, ele pode ser usado para acompanhar e recriar atividades.Activity tracking: Since Kafka provides in-order logging of records, it can be used to track and re-create activities. Por exemplo, as ações do usuário em um site ou em um aplicativo.For example, user actions on a web site or within an application.

  • Agregação: Usando o processamento de fluxo, você pode agregar informações de fluxos diferentes para combinar e centralizar as informações em dados operacionais.Aggregation: Using stream processing, you can aggregate information from different streams to combine and centralize the information into operational data.

  • Transformação: Usando o processamento de fluxo, você pode combinar e enriquecer dados de vários tópicos de entrada em um ou mais tópicos de saída.Transformation: Using stream processing, you can combine and enrich data from multiple input topics into one or more output topics.

Próximas etapasNext steps

Use os links a seguir para aprender a usar o Apache Kafka no HDInsight:Use the following links to learn how to use Apache Kafka on HDInsight: