Compartilhar via


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

O recurso Captura de Hubs de Eventos do Azure captura automaticamente dados de streaming que fluem pelos Hubs de Eventos para uma conta de Armazenamento de Blobs do Azure ou Azure Data Lake Storage. Para controlar quando os Hubs de Eventos armazenam os dados, você pode especificar um intervalo de tempo ou tamanho. Você pode habilitar ou configurar rapidamente o recurso Captura de Hubs de Eventos. Ele não requer custos administrativos para execução e é dimensionado automaticamente com a capacidade dos Hubs de Eventos.

A camada Standard usa unidades de taxa de transferência e a camada Premium usa unidades de processamento. A Captura de Hubs de Eventos simplifica o processo de carregamento de dados de streaming no Azure e permite que você se concentre no processamento de dados em vez da captura de dados.

Diagrama que mostra um processo que captura dados do Event Hubs no Blob Storage ou no Data Lake Storage.

Use a Captura de Hubs de Eventos para processar pipelines em tempo real e baseados em lote no mesmo stream. Essa abordagem ajuda você a criar soluções que crescem com suas necessidades ao longo do tempo. Se você estiver usando sistemas baseados em lote e pretende adicionar processamento em tempo real mais tarde ou se quiser adicionar um caminho frio eficiente a uma solução em tempo real existente, o Event Hubs Capture simplifica o trabalho com dados em fluxo.

Pontos importantes a serem considerados

  • A conta de armazenamento de destino, seja Armazenamento de Blobs ou Data Lake Storage, deve residir na mesma assinatura que o hub de eventos quando você não usa identidade gerenciada para autenticação.

  • Os Hubs de Eventos não dão suporte à captura de eventos em contas de Armazenamento premium do Azure.

  • A Captura de Hubs de Eventos dá suporte a contas de Armazenamento não premium que permitem blobs de blocos.

Como a Captura de Hubs de Eventos funciona

Os Event Hubs servem como um buffer durável de retenção temporal para ingresso de telemetria, semelhante a um log distribuído. O modelo de consumidor particionado permite a escalabilidade. Cada partição é um segmento independente de dados e é consumido de forma independente. Esses dados são excluídos após o período de retenção configurável, de modo que o hub de eventos nunca fica muito cheio.

A Captura de Hubs de Eventos permite que você especifique uma conta de Armazenamento de Blobs e um contêiner, ou uma conta do Data Lake Storage, para armazenar dados capturados. Essas contas podem residir na mesma região que o hub de eventos ou em outra região, o que adiciona flexibilidade.

A Captura de Hubs de Eventos grava dados capturados no formato Apache Avro , que é um formato binário compacto, rápido e que fornece estruturas de dados avançadas com esquema embutido. O ecossistema do Hadoop, o Azure Stream Analytics e o Azure Data Factory usam esse formato. Seções posteriores neste artigo fornecem mais informações sobre como trabalhar com o Avro.

Observação

Janelas da Captura

Para controlar a captura, use a Captura de Hubs de Eventos para configurar uma janela que use uma configuração mínima de tamanho e tempo. O sistema aplica uma política primeiro ganha, o que significa que a primeira condição atendida, seja tamanho ou tempo, aciona a captura. Por exemplo, se você tiver uma janela de captura de quinze minutos e 100 megabytes (MB) e enviar 1 MB por segundo, a janela de tamanho será acionada antes da janela de tempo.

Cada partição captura dados de forma independente e grava um blob de blocos concluído no momento da captura. O nome do blob reflete o horário em que o intervalo de captura foi encontrado.

A convenção de nomenclatura de armazenamento segue esta estrutura:

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

Os valores de data são preenchidos com zeros. O nome de arquivo a seguir mostra um exemplo:

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

Se o blob do Armazenamento ficar temporariamente indisponível, a Captura de Hubs de Eventos reterá os dados pelo período de retenção de dados configurado no hub de eventos. Depois que a conta de Armazenamento estiver disponível novamente, a Captura de Hubs de Eventos preencherá os dados.

Dimensionar unidades de rendimento ou unidades de processamento

Na camada Standard dos Hubs de Eventos, as unidades de processamento controlam o tráfego. Na camada Premium, as unidades de processamento controlam o tráfego. A Captura de Hubs de Eventos copia dados diretamente do armazenamento interno dos Hubs de Eventos, o que ignora as cotas de saída de unidades de produtividade ou unidades de processamento e economiza a saída para outros leitores de processamento, como Stream Analytics ou Apache Spark.

Depois de configurar o Event Hubs Capture, ele é iniciado automaticamente quando você envia seu primeiro evento e continua em execução. Para ajudar os sistemas downstream a confirmar se o processo funciona, os Hubs de Eventos gravam arquivos vazios quando nenhum dado está disponível. Esse processo fornece cadência e marcador previsíveis que podem alimentar os processadores em lotes.

Configurar Captura em Event Hubs

Para configurar o Capture ao criar um hub de eventos, use o portal do Azure ou um modelo do ARM (Azure Resource Manager). Para obter mais informações, consulte os seguintes artigos:

Observação

Se você habilitar o recurso Capturar para um hub de eventos existente, o recurso capturará apenas os eventos que chegam depois que você o ativar. Ele não captura eventos que existem antes da ativação.

Cobrança da Captura de Hubs de Eventos

A camada Premium dos Hubs de Eventos inclui o recurso Capturar. Para a camada Standard, o Azure cobra pela Captura mensalmente com base no número de unidades de taxa de transferência para o namespace. À medida que você escala unidades de produtividade para cima ou para baixo, a Captura de Hubs de Eventos ajusta sua medição para corresponder ao desempenho. Esses medidores reduzem horizontalmente em conjunto.

A captura não consome cota de saída porque o Azure a cobra separadamente.

Para obter mais informações, confira Preços de Hubs de Eventos.

Integração com o Event Grid do Azure

Você pode criar uma assinatura da Grade de Eventos do Azure com um namespace de Hubs de Eventos como sua fonte. Para obter mais informações sobre como criar uma assinatura do Evento Grid com um hub de eventos como origem e um aplicativo do Azure Functions como destino, consulte Migrar dados capturados dos Hubs de Eventos para o Azure Synapse Analytics.

Explorar arquivos capturados

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

Conta de Armazenamento do Azure como um destino

Para habilitar o Capture em um hub de eventos que usa o Armazenamento como destino de captura ou atualizar propriedades em um hub de eventos que usa o Armazenamento como destino de captura, o usuário ou entidade de serviço deve ter uma função RBAC (controle de acesso baseado em função) que inclua 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 essa permissão, o seguinte erro é exibido:

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>

Para resolver esse problema, adicione a conta de usuário ou a entidade de serviço à função interna Proprietário de Dados de Blob de Armazenamento, que inclui as permissões necessárias.

A Captura de Hubs de Eventos fornece uma maneira simples de ingerir dados no Azure. Com o Data Lake Storage, o Azure Data Factory e o Azure HDInsight, você pode executar processamento e análise em lote usando ferramentas e plataformas familiares em qualquer escala.

Para habilitar esse recurso, use o portal do Azure ou um modelo do ARM:

Para obter mais informações sobre as opções de redundância de dados para sua conta de armazenamento de destino do Capture, consulte Confiabilidade no Armazenamento de Blobs.