Capturar eventos por meio dos Hubs de Eventos do Azure no Armazenamento de Blobs do Azure ou no Armazenamento do Azure Data Lake

Os Hubs de Eventos do Azure permitem capturar automaticamente os dados de streaming em Hubs de Eventos em um armazenamento de Blob do Azure ou uma conta do Azure Data Lake Storage Gen 1 ou Gen 2 de sua escolha, com a flexibilidade adicional de especificar um intervalo de tempo ou tamanho. A configuração do Capture é rápida, não há custos administrativos para executá-lo e ele é dimensionado automaticamente com unidades de taxa de transferência de Hubs de Eventos na camada padrão ou unidades de processamento na camada premium. A Captura de Hubs de Eventos é a maneira mais fácil de carregar dados de streaming no Azure e permite que você se concentre no processamento de dados em vez da captura de dados.

Imagem mostrando a captura de dados de Hubs de Eventos no Armazenamento do Azure ou no Armazenamento do Azure Data Lake

Nota

Configurar a Captura de Hubs de Eventos para usar o Azure Data Lake Storage Gen 2 é o mesmo que configurá-lo para usar um Armazenamento de Blobs do Azure. Para obter detalhes, consulte Configurar a captura de Hubs de Eventos.

O Event Hubs Capture permite processar pipelines em tempo real e baseados em lote no mesmo fluxo. Isso significa que você pode criar soluções que crescem de acordo com suas necessidades ao longo do tempo. Se você está construindo sistemas baseados em lote hoje com um olho para o processamento futuro em tempo real, ou você deseja 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 (Armazenamento do Azure ou Armazenamento do Azure Data Lake) deve estar na mesma assinatura que o hub de eventos quando não estiver usando a identidade gerenciada para autenticação.
  • Os Hubs de Eventos não suportam a captura de eventos em uma conta de armazenamento premium.
  • A captura de Hubs de Eventos dá suporte a qualquer conta de armazenamento do Azure não premium com suporte para blobs de bloco.

Como funciona a captura de Hubs de Eventos

Os Hubs de Eventos são um buffer durável de retenção de tempo para entrada de telemetria, semelhante a um log distribuído. A chave para o dimensionamento em Hubs de Eventos é o modelo de consumidor particionado. Cada partição é um segmento independente de dados e é consumida independentemente. Com o tempo, esses dados envelhecem, com base no período de retenção configurável. Como resultado, um determinado hub de eventos nunca fica "muito cheio".

A Captura de Hubs de Eventos permite que você especifique sua própria conta e contêiner de armazenamento de Blob do Azure ou conta de Armazenamento do Azure Data Lake, que são usados para armazenar os dados capturados. Essas contas podem estar na mesma região do seu hub de eventos ou em outra região, aumentando a flexibilidade do recurso de captura de Hubs de Eventos.

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

Nota

Quando você não usa nenhum editor de código no portal do Azure, pode capturar dados de streaming em Hubs de Eventos em uma conta do Azure Data Lake Storage Gen2 no formato Parquet . Para obter mais informações, consulte Como capturar dados de Hubs de Eventos no formato Parquet e Tutorial: capturar dados de Hubs de Eventos no formato Parquet e analisar com o Azure Synapse Analytics.

Capturar janelas

O Event Hubs Capture permite configurar uma janela para controlar a captura. Esta janela é uma configuração mínima de tamanho e tempo com uma "política de primeiro ganho", o que significa que o primeiro gatilho encontrado causa uma operação de captura. Se você tiver uma janela de captura de quinze minutos e 100 MB e enviar 1 MB por segundo, a janela de tamanho será acionada antes da janela de tempo. Cada partição captura de forma independente e grava um blob de bloco concluído no momento da captura, nomeado para o tempo em que o intervalo de captura foi encontrado. A convenção de nomenclatura de armazenamento é a seguinte:

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

Os valores de data são preenchidos com zeros; Um nome de arquivo de exemplo pode ser:

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

Se o blob de armazenamento do Azure estiver temporariamente indisponível, a Captura de Hubs de Eventos reterá seus dados durante o período de retenção de dados configurado no hub de eventos e preencherá novamente os dados assim que sua conta de armazenamento estiver disponível novamente.

Dimensionamento de unidades de rendimento ou unidades de processamento

Na camada padrão de Hubs de Eventos, o tráfego é controlado por unidades de taxa de transferência e, nos Hubs de Eventos de camada premium, é controlado por unidades de processamento. Hubs de Eventos Capture cópias de dados diretamente do armazenamento interno dos Hubs de Eventos, ignorando as cotas de saída da unidade de taxa de transferência ou da unidade de processamento e salvando sua saída para outros leitores de processamento, como o Stream Analytics ou o Spark.

Uma vez configurado, o Event Hubs Capture é executado automaticamente quando você envia seu primeiro evento e continua em execução. Para facilitar o processamento downstream saber que o processo está funcionando, os Hubs de Eventos gravam arquivos vazios quando não há dados. Esse processo fornece uma cadência e um marcador previsíveis que podem alimentar seus processadores em lote.

Configurando a captura de Hubs de Eventos

Você pode configurar o Capture no momento da criação do hub de eventos usando o portal do Azure ou usando modelos do Azure Resource Manager. Para obter mais informações, consulte os seguintes artigos que podem estar em inglês:

Nota

Se você habilitar o recurso Capturar para um hub de eventos existente, o recurso capturará eventos que chegarão ao hub de eventos depois que o recurso for ativado. Ele não captura eventos que existiam no hub de eventos antes de o recurso ser ativado.

Como a captura de Hubs de Eventos é cobrada

O recurso de captura está incluído no nível premium, portanto, não há cobrança adicional para esse nível. Para a camada Standard, o recurso é cobrado mensalmente e a cobrança é diretamente proporcional ao número de unidades de taxa de transferência ou unidades de processamento adquiridas para o namespace. À medida que as unidades de taxa de transferência ou unidades de processamento são aumentadas e diminuídas, os medidores de captura de Hubs de Eventos aumentam e diminuem para fornecer um desempenho correspondente. Os medidores ocorrem em conjunto. Para obter detalhes de preços, consulte Preços dos Hubs de Eventos.

A captura não consome cota de saída, pois é cobrada separadamente.

Integração com Event Grid

Você pode criar uma assinatura da Grade de Eventos do Azure com um namespace Hubs de Eventos como origem. O tutorial a seguir mostra como criar uma assinatura de Grade de Eventos com um hub de eventos como fonte e um aplicativo do Azure Functions como coletor: Processar e migrar dados capturados de Hubs de Eventos para uma Análise de Sinapse do Azure usando a Grade de Eventos e o Azure Functions.

Explore os arquivos capturados

Para saber como explorar arquivos Avro capturados, consulte Explorar arquivos Avro capturados.

Conta de Armazenamento do Azure como destino

Para habilitar a captura em um hub de eventos com o Armazenamento do Azure como destino de captura ou atualizar propriedades em um hub de eventos com o Armazenamento do Azure como destino de captura, o usuário ou entidade de serviço deve ter uma função RBAC com as seguintes permissões atribuídas no escopo da conta de armazenamento. 

Microsoft.Storage/storageAccounts/blobServices/containers/write
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write

 

Sem a permissão acima, você verá o erro abaixo:

Generic: Linked access check failed for capture storage destination <StorageAccount Arm Id>.
User or the application with object id <Object Id> making the request doesn't have the required data plane write permissions.
Please enable Microsoft.Storage/storageAccounts/blobServices/containers/write, Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write permission(s) on above resource for the user or the application and retry.
TrackingId:<ID>, SystemTracker:mynamespace.servicebus.windows.net:myhub, Timestamp:<TimeStamp>

O Proprietário de Dados de Blob de Armazenamento é uma função interna com permissões acima, portanto, adicione a conta de usuário ou a entidade de serviço a essa função.  

Próximos passos

A Captura de Hubs de Eventos é a maneira mais fácil de obter dados no Azure. Usando o Azure Data Lake, o Azure Data Factory e o Azure HDInsight, você pode executar processamento em lote e outras análises usando ferramentas e plataformas familiares de sua escolha, em qualquer escala necessária.

Saiba como habilitar esse recurso usando o portal do Azure e o modelo do Azure Resource Manager: