Capture eventos através de Azure Event Hubs em Azure Blob Armazenamento ou Azure Data Lake Armazenamento

O Azure Event Hubs permite-lhe capturar automaticamente os dados de streaming em Event Hubs num armazenamento Azure Blob ou no Azure Data Lake Armazenamento conta Gen 1 ou Gen 2 à sua escolha, com a flexibilidade adicional de especificar um intervalo de tempo ou tamanho. A configuração do Capture é rápida, não existem custos administrativos para executá-lo, e escala automaticamente com unidades de produção de Event Hubs no nível padrão ou unidades de processamento no nível premium. O Event Hubs Capture é a forma mais fácil de carregar dados de streaming no Azure e permite-lhe focar no processamento de dados e não na captura de dados.

Imagem mostrando a captura de dados do Event Hubs em Azure Armazenamento ou Azure Data Lake Armazenamento

Nota

Configurar a captura de centros de eventos para usar o Lago de Dados Azure Armazenamento Gen 2 é o mesmo que configurar para usar um Armazenamento de Blob Azure. Para mais detalhes, consulte a Captura de Hubs de Eventos Configurar.

O Event Hubs Capture permite-lhe processar gasodutos em tempo real e baseados em lotes no mesmo fluxo. Isto significa que pode construir soluções que cresçam com as suas necessidades ao longo do tempo. Quer esteja a construir sistemas baseados em lotes hoje com um olho para o processamento futuro em tempo real, ou se pretende adicionar um caminho frio eficiente a uma solução existente em tempo real, o Event Hubs Capture facilita o trabalho com dados de streaming.

Importante

A conta de armazenamento de destino (Azure Armazenamento ou Azure Data Lake Armazenamento) deve estar na mesma subscrição que o centro do evento.

Como funciona a captura de centros de eventos

Event Hubs é um tampão durável de retenção de tempo para entrada de telemetria, semelhante a um log distribuído. A chave para a escala em Event Hubs é o modelo de consumidor dividido. Cada divisória é um segmento independente de dados e é consumida de forma independente. Com o tempo, estes dados envelhecem, com base no período de retenção configurável. Como resultado, um dado centro de eventos nunca fica "muito cheio".

O Event Hubs Capture permite-lhe especificar a sua própria conta de armazenamento e contentor Azure Blob, ou conta Azure Data Lake Armazenamento, que são usadas para armazenar os dados capturados. Estas contas podem estar na mesma região que o seu centro de eventos ou noutra região, aumentando a flexibilidade da funcionalidade de Captura de Centros de Eventos.

Os dados capturados estão escritos no formato Apache Avro: um formato compacto, rápido e binário que fornece estruturas de dados ricas com esquema inline. Este formato é amplamente utilizado no ecossistema Hadoop, Stream Analytics e Azure Data Factory. Mais informações sobre trabalhar com a Avro estão disponíveis mais tarde neste artigo.

Captação de janelas

O Event Hubs Capture permite-lhe configurar uma janela para controlar a captura. Esta janela é uma configuração de tamanho e tempo mínimo com uma "política de primeira vitória", o que significa que o primeiro gatilho encontrado causa uma operação de captura. Se tiver uma janela de captura de 15 minutos e 100 MB e enviar 1 MB por segundo, a janela de tamanho dispara antes da janela do tempo. Cada divisória captura independentemente e escreve uma bolha de bloco completa no momento da captura, nomeada para o momento em que o intervalo de captura foi encontrado. A convenção de nomeação de armazenamento é a seguinte:

{Namespace}/{EventHub}/{PartitionId}/{Year}/{Month}/{Day}/{Hour}/{Minute}/{Second}

Os valores da data são acolchoados com zeros; um nome de arquivo exemplo pode ser:

https://mystorageaccount.blob.core.windows.net/mycontainer/mynamespace/myeventhub/0/2017/12/08/03/03/17.avro

Caso a sua bolha de armazenamento Azure esteja temporariamente indisponível, o Event Hubs Capture conservará os seus dados para o período de retenção de dados configurado no seu centro de eventos e preencherá os dados assim que a sua conta de armazenamento estiver novamente disponível.

Unidades de produção de escala ou unidades de processamento

No nível padrão dos Centros de Eventos, o tráfego é controlado por unidades de produção e nos Centros de Eventos de nível premium, é controlado por unidades de processamento. Os Centros de Eventos Capturem dados diretamente do armazenamento interno do Event Hubs, contornando a unidade de produção ou a unidade de processamento esmende as quotas e guardando a sua saída para outros leitores de processamento, como stream Analytics ou Spark.

Uma vez configurado, o Event Hubs Capture funciona automaticamente quando envia o seu primeiro evento e continua a correr. Para facilitar o processamento a jusante saber que o processo está a funcionar, o Event Hubs escreve ficheiros vazios quando não há dados. Este processo fornece uma cadência e marcador previsíveis que podem alimentar os seus processadores de lote.

Criação de Captura de Centros de Eventos

Pode configurar o Tempo de Criação do Centro de Eventos utilizando o portal Azure,ou utilizando modelos de Gestor de Recursos Azure. Para obter mais informações, veja os seguintes artigos:

Nota

Se ativar a funcionalidade Captura para um centro de eventos existente, a funcionalidade captura eventos que chegam ao centro de eventos depois de a funcionalidade ser ativada. Não captura eventos que existiam no centro de eventos antes da funcionalidade ser ligada.

Explorar os ficheiros capturados e trabalhar com a Avro

O Event Hubs Capture cria ficheiros em formato Avro, conforme especificado na janela de tempo configurada. Pode ver estes ficheiros em qualquer ferramenta como Explorador de Armazenamento do Azure. Pode descarregar os ficheiros localmente para os trabalhar.

Os ficheiros produzidos pela Event Hubs Capture têm o seguinte esquema Avro:

Esquema de Avro

Uma maneira fácil de explorar ficheiros Avro é usando o frasco Avro Tools de Apache. Também pode utilizar o Apache Drill para uma experiência leve SQL ou Apache Spark para realizar um processamento distribuído complexo nos dados ingeridos.

Use a broca Apache

A Apache Drill é um "motor de consulta de SQL de código aberto para a exploração de Big Data" que pode consultar dados estruturados e semi-estruturados onde quer que esteja. O motor pode funcionar como um nó autónomo ou como um enorme cluster para um grande desempenho.

Um suporte nativo ao armazenamento Azure Blob está disponível, o que facilita a consulta de dados num ficheiro Avro, conforme descrito na documentação:

Broca Apache: Azure Blob Armazenamento Plugin

Para consultar facilmente ficheiros capturados, pode criar e executar um VM com Apache Drill habilitado através de um contentor para aceder ao armazenamento do Azure Blob. Consulte a seguinte amostra: Streaming em escala com captura de centros de eventos.

Use a faísca Apache

Apache Spark é um "motor de análise unificado para o processamento de dados em larga escala". Suporta diferentes idiomas, incluindo SQL, e pode facilmente aceder ao armazenamento do Azure Blob. Existem algumas opções para executar Apache Spark em Azure, e cada uma fornece fácil acesso ao armazenamento Azure Blob:

Use ferramentas Avro

As Ferramentas Avro estão disponíveis como um pacote de frascos. Depois de descarregar o ficheiro do frasco, pode ver o esquema de um ficheiro Avro específico executando o seguinte comando:

java -jar avro-tools-1.9.1.jar getschema <name of capture file>

Este comando retorna

{

    "type":"record",
    "name":"EventData",
    "namespace":"Microsoft.ServiceBus.Messaging",
    "fields":[
                 {"name":"SequenceNumber","type":"long"},
                 {"name":"Offset","type":"string"},
                 {"name":"EnqueuedTimeUtc","type":"string"},
                 {"name":"SystemProperties","type":{"type":"map","values":["long","double","string","bytes"]}},
                 {"name":"Properties","type":{"type":"map","values":["long","double","string","bytes"]}},
                 {"name":"Body","type":["null","bytes"]}
             ]
}

Também pode utilizar as Ferramentas Avro para converter o ficheiro no formato JSON e realizar outros processamentos.

Para realizar um processamento mais avançado, descarregue e instale o Avro para a sua escolha de plataforma. No momento desta escrita, existem implementações disponíveis para C, C++, # C, Java, NodeJS, Perl, PHP, Python e Ruby.

Apache Avro tem guias completos de Arranque para Java e Python. Também pode ler o artigo 'Começar com o Event Hubs Capture'.

Como a captura de centros de eventos é carregada

O Event Hubs Capture é medido de forma semelhante às unidades de produção (nível padrão) ou unidades de processamento (em nível premium): como uma carga horária. A carga é diretamente proporcional ao número de unidades de produção ou unidades de processamento adquiridas para o espaço de nome. À medida que as unidades de produção ou unidades de processamento são aumentadas e diminuídas, os contadores de captura de centros de eventos aumentam e diminuem para fornecer um desempenho correspondente. Os contadores ocorrem em conjunto. Para obter detalhes sobre os preços, consulte os preços do Event Hubs.

A captura não consome quota de saída, uma vez que é faturada separadamente.

Integração com a Grelha de Eventos

Pode criar uma subscrição da Azure Event Grid com um espaço de nomes de Event Hubs como fonte. O seguinte tutorial mostra-lhe como criar uma subscrição de Event Grid com um centro de eventos como fonte e uma aplicação Azure Functions como pia: Processar e migrar dados de Centros de Eventos capturados para um Azure Synapse Analytics usando a Grade de Eventos e Funções Azure.

Passos seguintes

Event Hubs Capture é a forma mais fácil de obter dados no Azure. Utilizando o Azure Data Lake, Azure Data Factory e Azure HDInsight, pode realizar o processamento de lotes e outras análises utilizando ferramentas e plataformas familiares à sua escolha, em qualquer escala que necessite.

Saiba como ativar esta funcionalidade utilizando o portal Azure e o modelo Azure Resource Manager: