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

Este artigo mostra como transmitir dados para os Hubs de Eventos e processá-lo com o Azure Stream Analytics. Orienta-o ao longo dos seguintes passos:

  1. Crie um espaço de nomes dos Hubs de Eventos.
  2. Crie um cliente Kafka que envie mensagens para o hub de eventos.
  3. Crie uma tarefa do Stream Analytics que copia dados do hub de eventos para um armazenamento de blobs do Azure.

Não precisa de alterar os clientes do protocolo nem de executar os seus próprios clusters quando utiliza o ponto final do Kafka exposto por um hub de eventos. Hubs de Eventos do Azure suporta a versão 1.0 e superior do Apache Kafka.

Pré-requisitos

Para concluir este início rápido, certifique-se de que tem os seguintes pré-requisitos:

  • Uma subscrição do Azure. Se não tiver uma, crie uma conta gratuita antes de começar.
  • Java Development Kit (JDK) 1.7+.
  • Transferir e instalar um arquivo binário Maven.
  • Git
  • Uma conta de Armazenamento do Azure. Se não tiver uma, crie uma antes de prosseguir. A tarefa do Stream Analytics nestas instruções armazena os dados de saída num armazenamento de blobs do Azure.

Criar um espaço de nomes dos Hubs de Eventos

Quando cria um espaço de nomes dos Hubs de Eventos, o ponto final do Kafka para o espaço de nomes é ativado automaticamente. Pode transmitir eventos a partir das aplicações que utilizam o protocolo Kafka para os hubs de eventos. Siga as instruções passo a passo no artigo Criar um hub de eventos com portal do Azure para criar um espaço de nomes dos Hubs de Eventos. Se estiver a utilizar um cluster dedicado, veja Criar um espaço de nomes e um hub de eventos num cluster dedicado.

Nota

Os Hubs de Eventos para Kafka não são suportados no escalão básico .

Enviar mensagens com o Kafka nos Hubs de Eventos

  1. Clone o Hubs de Eventos do Azure do repositório kafka para o seu computador.

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

  3. Atualize os detalhes de configuração do produtor em src/main/resources/producer.config. Especifique o nome e a cadeia de ligação para o espaço de nomes 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 para azure-event-hubs-for-kafka/quickstart/java/producer/src/main/java/e abra o ficheiro TestDataReporter.java num editor à 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 em vez do código comentado:

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

    Este código envia os dados do evento no formato JSON . Quando configura a entrada para uma tarefa do Stream Analytics, especifica JSON como o formato dos dados de entrada.

  7. Execute o produtor e transmita em fluxo para os Hubs de Eventos. Num computador Windows, ao utilizar uma linha de comandosNode.js, mude para a azure-event-hubs-for-kafka/quickstart/java/producer pasta antes de executar estes 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 que vê um hub de eventos com o nome test.

    Hub de eventos - teste

  2. Confirme que vê mensagens a chegar ao hub de eventos.

    Hub de eventos - mensagens

Processar dados de eventos com uma tarefa do Stream Analytics

Nesta secção, vai criar uma tarefa do Azure Stream Analytics. O cliente Kafka envia eventos para o hub de eventos. Pode criar uma tarefa do Stream Analytics que utiliza dados de eventos como entrada e os exporta para um armazenamento de blobs do Azure. Se não tiver uma conta de Armazenamento do Azure, crie uma.

A consulta na tarefa do Stream Analytics transmite os dados sem efetuar análises. Pode criar uma consulta que transforma os dados de entrada para produzir dados de saída num formato diferente ou com informações obtidas.

Criar uma tarefa do Stream Analytics

  1. Selecione + Criar um recurso no portal do Azure.
  2. Selecione Análise no menu Azure Marketplace e selecione Tarefa do Stream Analytics.
  3. Na página Novo Stream Analytics , efetue as seguintes ações:
    1. Introduza um nome para a tarefa.

    2. Selecione a subscrição.

    3. Selecione Criar novo para o grupo de recursos e introduza o nome. Também pode utilizar um grupo de recursos existente.

    4. Selecione uma localização para a tarefa.

    5. Selecione Criar para criar a tarefa.

      Nova tarefa do Stream Analytics

Configurar a entrada da tarefa

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

  2. Selecione Entradas na secção TOPOLOGIA DA TAREFA no menu esquerdo.

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

    Adicionar o hub de eventos como entrada

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

    1. Especifique um alias para a entrada.

    2. Selecione a sua subscrição do Azure.

    3. Selecione o espaço de nomes do hub de eventos que criou anteriormente.

    4. Selecione testar para o hub de eventos.

    5. Selecione Guardar.

      Configuração de entrada do hub de eventos

Configurar a saída da tarefa

  1. Selecione Saídas na secção TOPOLOGIA DA TAREFA no menu.
  2. Selecione + Adicionar na barra de ferramentas e selecione Armazenamento de blobs
  3. Na página Definições de saída do Armazenamento de blobs, efetue as seguintes ações:
    1. Especifique um alias para o resultado.

    2. Selecione a sua subscrição do Azure.

    3. Selecione a sua conta de Armazenamento do Azure.

    4. Introduza um nome para o contentor que armazena os dados de saída da consulta do Stream Analytics.

    5. Selecione Guardar.

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

Definir uma consulta

Depois de ter uma tarefa do Stream Analytics configurada para ler um fluxo de dados de entrada, o passo seguinte consiste em criar uma transformação que analisa os dados em tempo real. Para definir a consulta de transformação, vai utilizar a Linguagem de Consulta do Stream Analytics. Nestas instruções, vai definir uma consulta que transmite os dados sem efetuar qualquer transformação.

  1. Selecione Consulta.

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

  3. Substitua [YourInputAlias] pelo alias de entrada que criou anteriormente.

  4. Selecione Guardar na barra de ferramentas.

    Captura de ecrã a mostrar a janela de consulta com valores para variáveis de entrada e saída.

Executar a tarefa do Stream Analytics

  1. Selecione Descrição geral no menu esquerdo.

  2. Selecione Iniciar.

    Menu Iniciar

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

    Página Iniciar tarefa

  4. Aguarde até que o estado da tarefa mude de Iniciar para em execução.

    Estado da tarefa - em execução

Testar o cenário

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

    mvn exec:java -Dexec.mainClass="TestProducer"                                    
    
  2. Confirme que vê que os dados de saída são gerados no armazenamento de blobs do Azure. Verá um ficheiro JSON no contentor com 100 linhas semelhantes às seguintes linhas de exemplo:

    {"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"}
    

    A tarefa do Azure Stream Analytics recebeu dados de entrada do hub de eventos e armazenou-os no armazenamento de blobs do Azure neste cenário.

Passos seguintes

Neste artigo, aprendeu a transmitir em fluxo para os Hubs de Eventos sem alterar os clientes do protocolo ou executar os seus próprios clusters. Para saber mais sobre os Hubs de Eventos para o Apache Kafka, veja Guia para programadores do Apache Kafka para Hubs de Eventos do Azure.