Tutorial: Processar Apache Kafka para eventos dos Hubs de Eventos usando o Stream Analytics

Este artigo mostra como transmitir dados para os Hubs de Eventos e processá-los com o Azure Stream Analytics. Este artigo apresenta as seguintes etapas:

  1. Crie um namespace dos Hubs de Eventos.
  2. Criar um cliente Kafka que envia mensagens para o hub de eventos.
  3. Criar um trabalho do Stream Analytics que copia dados do hub de eventos para um armazenamento de Blobs do Azure.

Não é necessário alterar os clientes de protocolo ou executar seus próprios clusters ao usar o ponto de extremidade do Kafka exposto por um hub de eventos. O Azure Event Hubs suporta o Apache Kafka versão 1.0. e superior.

Pré-requisitos

Para concluir este início rápido, você precisa atender aos seguinte pré-requisitos:

Criar um namespace de Hubs de Eventos

Quando você cria um namespace dos Hubs de Eventos, o ponto de extremidade do Kafka para o namespace é habilitado automaticamente. Você pode transmitir eventos de aplicativos que usam o protocolo Kafka para hubs de eventos. Siga as instruções passo a passo em Criar um hub de eventos usando o portal do Azure para criar um namespace dos Hubs de Eventos. Se estiver usando um cluster dedicado, confira Criar um namespace e um hub de eventos em um cluster dedicado.

Observação

Não há suporte para os Hubs de Eventos para Kafka na camada básica.

Enviar mensagens com Kafka em Hubs de Eventos

  1. Clone o repositório de Hubs de Eventos do Azure para Kafka no computador.

  2. Navegue até a pasta: azure-event-hubs-for-kafka/quickstart/java/producer.

  3. Atualize os detalhes de configuração para o produtor em src/main/resources/producer.config. Especifique o nome e a cadeia de conexão do namespace do hub de eventos.

    bootstrap.servers={EVENT HUB NAMESPACE}.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="{CONNECTION STRING for EVENT HUB NAMESPACE}";
    
  4. Navegue até azure-event-hubs-for-kafka/quickstart/java/producer/src/main/java/ e abra o arquivo TestDataReporter.java em um editor de sua escolha.

  5. Comente a seguinte linha de código:

                //final ProducerRecord<Long, String> record = new ProducerRecord<Long, String>(TOPIC, time, "Test Data " + i);
    
  6. Adicione a seguinte linha de código no lugar do código comentado:

                final ProducerRecord<Long, String> record = new ProducerRecord<Long, String>(TOPIC, time, "{ \"eventData\": \"Test Data " + i + "\" }");            
    

    Esse código envia os dados do evento no formato JSON. Ao configurar a entrada para uma tarefa do Stream Analytics, você especifica JSON como o formato dos dados de entrada.

  7. Execute o produtor e transmita para os hubs de eventos. Em um computador Windows, ao usar um prompt de comando Node.js, alterne para a pasta azure-event-hubs-for-kafka/quickstart/java/producer antes de executar esses comandos.

    mvn clean package
    mvn exec:java -Dexec.mainClass="TestProducer"                                    
    

Verifique se o hub de eventos recebe os dados

  1. Selecione Hubs de Eventos em ENTIDADES. Confirme se você vê um hub de eventos nomeado teste.

    Hub de eventos - teste

  2. Confirme se você vê mensagens chegando ao hub de eventos.

    Hub de eventos - mensagens

Processar dados do evento usando um trabalho do Stream Analytics

Nesta seção, você cria um trabalho do Azure Stream Analytics. O cliente Kafka envia eventos para o hub de eventos. Você cria um trabalho do Stream Analytics que recebe dados do evento como entrada e os envia para um armazenamento de Blobs do Azure. Se não tiver uma conta de Armazenamento do Microsoft Azure, crie uma.

A consulta no trabalho do Stream Analytics passa pelos dados sem executar quaisquer análises. É possível criar uma consulta que transforma os dados de entrada para produzir dados de saída em um formato diferente ou com insights obtidos.

Criar um trabalho de Stream Analytics

  1. Selecione + Criar um recurso no portal do Azure.
  2. Selecione Analytics no menu Azure Marketplace e selecione trabalho do Stream Analytics.
  3. Na página Novo Stream Analytics, execute as seguintes ações:
    1. Insira um nome para o trabalho.

    2. Selecione sua assinatura.

    3. Selecione Criar novo para o grupo de recursos e insira o nome. Também é possível usar um grupo de recursos existente.

    4. Selecione um local para o trabalho.

    5. Selecione Criar para criar o trabalho.

      Novo trabalho do Stream Analytics

Configurar entrada de trabalho

  1. Na mensagem de notificação, selecione Ir para o recurso para ver a página do trabalho do Stream Analytics.

  2. Selecione Entradas na seção TOPOLOGIA DO TRABALHO no menu esquerdo.

  3. Selecione Adicionar entrada de fluxo e, em seguida, selecione Hub de eventos.

    Adicionar hub de eventos como uma entrada

  4. Na página de configuração entrada do Hub de Eventos, execute as seguintes ações:

    1. Especifique um alias para a entrada.

    2. Selecione sua assinatura do Azure.

    3. Selecione o namespace do hub de eventos criado anteriormente.

    4. Selecione testar para o hub de eventos.

    5. Clique em Salvar.

      Configuração de entrada do hub de eventos

Configurar saída de trabalho

  1. Selecione Saídas na seção TOPOLOGIA DO TRABALHO no menu.
  2. Selecione + Adicionar na barra de ferramentas e selecione Armazenamento de Blobs
  3. Na página de configurações de saída de Armazenamento de Blobs, execute as seguintes ações:
    1. Especifique um alias para a saída.

    2. Selecione sua assinaturado Azure.

    3. Selecione a conta de Armazenamento do Microsoft Azure.

    4. Insira um nome para o contêiner que armazena os dados de saída da consulta do Stream Analytics.

    5. Clique em Salvar.

      Configuração de saída do Armazenamento de Blobs

Definir uma consulta

Depois configurar um trabalho do Stream Analytics para ler um fluxo de dados de entrada, a próxima etapa é criar uma transformação que analisa os dados em tempo real. Defina a consulta de transformação usando a Linguagem de consulta do Stream Analytics. Neste passo a passo, você define uma consulta que passa pelos dados sem executar nenhuma transformação.

  1. Selecione Consulta.

  2. Na janela de consulta, substitua [YourOutputAlias] pelo alias de saída criado anteriormente.

  3. Substitua [YourInputAlias] pelo alias de entrada criado anteriormente.

  4. Selecione Salvar na barra de ferramentas.

    Captura de tela que mostra a janela de consulta com valores para variáveis de entrada e saída.

Executar o trabalho do Stream Analytics

  1. Selecione Visão geral no menu esquerdo.

  2. Selecione Iniciar.

    Menu Iniciar

  3. Na página Iniciar trabalho, selecione Iniciar.

    Página Iniciar trabalho

  4. Aguarde até que o status do trabalho seja alterado de Iniciando para em execução.

    Status do trabalho - em execução

Testar o cenário

  1. Execute o produtor do Kafka novamente para enviar eventos para o hub de eventos.

    mvn exec:java -Dexec.mainClass="TestProducer"                                    
    
  2. Confirme se você vê os dados de saída sendo gerados no armazenamento de Blobs do Azure. Você vê um arquivo JSON no contêiner com 100 linhas semelhantes às linhas de exemplo a seguir:

    {"eventData":"Test Data 0","EventProcessedUtcTime":"2018-08-30T03:27:23.1592910Z","PartitionId":0,"EventEnqueuedUtcTime":"2018-08-30T03:27:22.9220000Z"}
    {"eventData":"Test Data 1","EventProcessedUtcTime":"2018-08-30T03:27:23.3936511Z","PartitionId":0,"EventEnqueuedUtcTime":"2018-08-30T03:27:22.9220000Z"}
    {"eventData":"Test Data 2","EventProcessedUtcTime":"2018-08-30T03:27:23.3936511Z","PartitionId":0,"EventEnqueuedUtcTime":"2018-08-30T03:27:22.9220000Z"}
    

    O job do Azure Stream Analytics recebeu dados de entrada do hub de eventos e os armazenou no armazenamento de blob do Azure nesse cenário.

Próximas etapas

Neste artigo, você aprendeu como transmitir para os Hubs de Eventos sem alterar seus clientes de protocolo ou seus próprios clusters em execução. Para saber mais sobre os Hubs de Eventos para Apache Kafka, confira guia do desenvolvedor do Apache Kafka para Hubs de Eventos do Azure.