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

Os Hubs de Eventos do Azure permitem que você captura automaticamente o streaming de dados por meio de Hubs de Eventos na conta Armazenamento de Blobs do Azure ou Azure Data Lake Storage Gen 1 ou Gen 2 de sua escolha. Ele também fornece flexibilidade para especificar um intervalo de tempo ou tamanho. Habilitar ou configurar o recurso Hubs de Eventos Captura é rápido. Não há custos administrativos para executá-lo e ele é dimensionado automaticamente com Hubs de Eventos unidades de taxa de transferência 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 de se concentrar na captura de dados.

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

Observação

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

A Captura de Hubs de Eventos permite processar pipelines em tempo real e baseados em lote no mesmo fluxo. Isso significa que você pode criar soluções que crescem com suas necessidades ao longo do tempo. Se você estiver criando sistemas baseados em lote com o objetivo de processá-los em tempo real no futuro ou para adicionar um caminho frio eficiente para uma solução em tempo real, a Captura de Hubs de Eventos facilita o trabalho de transmissão de dados.

Importante

  • A conta de armazenamento de destino (Armazenamento do Azure ou Azure Data Lake Storage) precisará estar na mesma assinatura do hub de eventos quando a identidade gerenciada não estiver sendo usada para autenticação.
  • Os Hubs de Eventos não são compatíveis com captura de eventos em uma conta de armazenamento Premium.
  • O Hubs de Eventos Captura dá suporte a qualquer conta de armazenamento do Azure não premium com suporte para blob de blocos.

Como a Captura de Hubs de Eventos funciona

Os Hubs de Eventos são um buffer de tempo de retenção durável para a entrada de telemetria, semelhante a um log distribuído. A chave para reduzir os Hubs de Eventos é o modelo de consumidor particionado. Cada partição é um segmento independente de dados e é consumido de forma independente. Ao longo do tempo, esses dados expiram com base no período de retenção configurável. Assim, um Hub de Eventos específico nunca fica “cheio demais”.

A Captura de Hubs de Eventos permite que você especifique sua própria conta de Armazenamento de Blobs do Azure e o contêiner, ou conta do Azure Data Lake Storage, que será usado para armazenar os dados capturados. Essa conta pode estar na mesma região que o hub de eventos ou em outra região, concedendo flexibilidade ao recurso de Captura de Hubs de Eventos.

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

Observação

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

Janelas da Captura

A Captura de Hubs de Eventos permite que você configure uma janela para controlar a captura. Essa janela tem configuração mínima de tamanho e tempo com uma “política de ganha quem vem primeiro”, o que significa que o primeiro gatilho encontrado causa uma operação de captura. Se você tiver uma janela de captura de quinze minutos/100 MB e enviar 1 MB por segundo, a janela de tamanho será disparada antes da janela de tempo. Cada partição captura de forma independente e grava um blob de blocos completo durante o tempo de captura, nomeado com a hora 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 estão preenchidos com zeros. Um nome de arquivo de exemplo poderia ser:

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

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

Dimensionamento de unidades de produtividade ou unidades de processamento

No nível padrão de Hubs de Eventos, unidades de taxa de transferência controlam o tráfego e nos Event Hubs de nível premium, unidades de processamento controlam o tráfego. A Captura de Hubs de Eventos copia os dados diretamente do armazenamento interno dos Hubs de Eventos, ignorando as cotas de saída das unidades de produtividade ou unidades de processamento e salvando a saída de outros leitores de processamento, como o Stream Analytics ou o Spark.

Uma vez configurado, a Captura de Hubs de Eventos é executada automaticamente quando você envia o primeiro evento e continua em execução. Para que o seu processamento downstream saiba mais facilmente que o processo está funcionando, os Hubs de Eventos gravam arquivos vazios quando não há nenhum dado. Esse processo fornece cadência e marcador previsíveis que podem alimentar os processadores em lotes.

Configurando a Captura de Hubs de Eventos

Você pode configurar a Captura na hora 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:

Observação

Se você habilitar o recurso Captura para um hub de eventos existente, o recurso captura eventos que chegam ao hub de eventos depois que o recurso é ativado. Ele não captura eventos que existiam no hub de eventos antes de o recurso ter sido ativado.

Como a Captura de Hubs de Eventos é cobrada

O recurso de captura está incluído no nível premium, portanto não há custo extra 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 compradas para o namespace. Conforme as unidades de produtividade ou unidades de processamento são aumentadas ou diminuídas, a Captura de Hubs de Eventos aumenta e diminui para ter o desempenho correspondente. Os medidores ocorrem em tandem. Para detalhes de preços, consulte Preços dos Hubs de Eventos.

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

Integração com a Grade de Eventos

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

Explorar arquivos capturados

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

Conta de Armazenamento do Azure como um destino

Para permitir a captura num centro de eventos com o Armazenamento do Azure como destino de captura ou atualizar propriedades num centro de eventos com o Armazenamento do Microsoft Azure como destino de captura, o utilizador ou diretor de serviço deve ter uma função de controlo de acesso baseado em funções (RBAC) com o seguintes permissões atribuídas no âmbito da conta de armazenamento. 

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

 

Sem essa permissão, você verá o seguinte erro:

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 dos Dados do 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.  

A Captura de Hubs de Eventos é a forma mais fácil de obter dados para o Azure. Usando o Azure Data Lake, o Azure Data Factory e o Azure HDInsight, você pode executar processamento em lotes e outras análises usando ferramentas familiares e plataformas de sua escolha, na escala que precisar.

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