Gravar dados do Serviço gerenciado para Apache Kafka no Cloud Storage

Se você precisar carregar dados de um tópico do Serviço Gerenciado para Apache Kafka em um bucket do Cloud Storage, use um modelo do Dataflow. É possível usar o console do Google Cloud , a API REST ou a Google Cloud CLI.

Este documento ajuda você a configurar o modelo Dataflow do Kafka para o Cloud Storage usando o console Google Cloud .

Google Cloud produtos usados

O modelo Dataflow do Kafka para o Cloud Storage usa os seguintes produtos faturáveis do Google Cloud . Use a calculadora de preços para gerar uma estimativa de custo com base no uso previsto.

  • Dataflow: é um serviço de processamento de dados totalmente gerenciado. O modelo Dataflow do Kafka para Cloud Storage usa o Dataflow para criar um pipeline que lê dados do seu tópico do Kafka, realiza as transformações necessárias e os grava no Cloud Storage. O escalonamento automático e os recursos de recuperação automática do Dataflow garantem que seu pipeline seja executado de forma confiável e eficiente.
  • Cloud Storage: serve como destino dos dados do Kafka. Você vai precisar de um bucket do Cloud Storage para armazenar os dados transferidos pelo pipeline do Dataflow.

Além disso, a solução também usa o Serviço Gerenciado para Apache Kafka.

  • Serviço gerenciado para Apache Kafka: um serviço Google Cloud que ajuda você a executar o Apache Kafka. Fornece os dados de origem para o pipeline. Você vai precisar de um cluster e um tópico do Serviço Gerenciado para Apache Kafka com dados que você quer transferir para o Cloud Storage. Para mais informações sobre os preços do Serviço Gerenciado para Apache Kafka, consulte o guia de preços.

Antes de começar

Antes de iniciar o modelo Kafka para Cloud Storage Dataflow, verifique se você concluiu o seguinte:

  1. Crie um cluster e um tópico do Serviço Gerenciado para Apache Kafka.

    Uma maneira de criar um cluster e um tópico é seguir o início rápido do Serviço Gerenciado para Apache Kafka.

    Se o tópico tiver registros Avro, consulte Configurar o formato de mensagem do Kafka para ver outros requisitos de recursos.

  2. Ative as seguintes APIs Google Cloud :

    • Dataflow

    • Cloud Storage

    gcloud services enable dataflow.googleapis.com storage-api.googleapis.com \
    
  3. Criar um bucket do Cloud Storage.

    Para mais informações sobre como criar um bucket do Cloud Storage, consulte Criar um bucket.

Conceda o papel de cliente do Kafka gerenciado à conta de serviço do worker do Dataflow

Para conectar seu job do Dataflow ao serviço gerenciado do Google Cloud para Apache Kafka, conceda permissões específicas à conta de serviço do worker do Dataflow. Essa conta de serviço é a identidade usada para todas as VMs de worker no seu job do Dataflow, e todas as solicitações feitas dessas VMs utilizam essa conta.

Para permitir o acesso aos recursos do Kafka, conceda o papel roles/managedkafka.client à conta de serviço do worker do Dataflow. Esse papel inclui a permissão managedkafka.clusters.connect necessária para estabelecer conexões.

Para mais informações sobre a conta de serviço do worker, consulte Segurança e permissões para pipelines no Google Cloud.

Para conceder o papel de cliente do Kafka gerenciado à conta de serviço do Dataflow, siga estas etapas:

Console

  1. No console do Google Cloud , acesse a página IAM.
    Acessar o IAM
  2. Verifique se o projeto está definido como o projeto de consumidor que o cliente do Serviço gerenciado para Apache Kafka acessaria.
  3. Clique em Conceder acesso.
  4. Na nova página, em Adicionar principais, insira o endereço de e-mail da conta de serviço do worker do Dataflow que você está usando.
  5. Em Atribuir papéis, selecione o papel Cliente gerenciado do Kafka.
  6. Clique em Salvar.

CLI da gcloud

  1. No console do Google Cloud , ative o Cloud Shell.

    Ativar o Cloud Shell

    Na parte de baixo do console Google Cloud , uma sessão do Cloud Shell é iniciada e exibe um prompt de linha de comando. O Cloud Shell é um ambiente shell com a CLI do Google Cloud já instalada e com valores já definidos para o projeto atual. A inicialização da sessão pode levar alguns segundos.

  2. Execute o comando gcloud projects add-iam-policy-binding:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member serviceAccount:SERVICE_ACCOUNT_EMAIL \
      --role roles/managedkafka.client

    Substitua:

    • PROJECT_ID é o ID do projeto.

    • SERVICE_ACCOUNT_EMAIL é o endereço de e-mail da conta de serviço do worker do Dataflow.

Iniciar o modelo do Dataflow do Kafka para o Cloud Storage

É possível iniciar o modelo Dataflow do Kafka para o Cloud Storage na página de detalhes do cluster no console.

  1. No console do Google Cloud , acesse a página Cluster.

    Acessar Clusters

    Os clusters criados em um projeto são listados.

  2. Para acessar a página de detalhes do cluster, clique no nome dele.
  3. Na página de detalhes do cluster, clique em Importar dados.

    A página Criar um job do Dataflow usando o modelo "Kafka para Kafka" será aberta.

  4. No modelo, em Modelo do Dataflow, atualize o modelo para Kafka para Cloud Storage.

Configure os campos no modelo de acordo com as informações incluídas nas seções a seguir.

Insira um nome para o job

No campo Nome do job, insira um nome para o job do Dataflow.

O nome precisa ser exclusivo entre todos os jobs em execução no projeto.

Escolher um endpoint regional para seu pipeline

No campo Endpoint regional, defina o endpoint regional como o local do cluster do Kafka para minimizar as taxas de transferência de dados entre regiões.

Os workers do Dataflow podem ser executados independentemente da região do cluster do Kafka. No entanto, você vai ter custos de saída inter-regional se iniciar workers fora da região do seu cluster do Kafka.

Para conferir a localização do cluster, siga as etapas em Listar seus clusters do Serviço gerenciado para Apache Kafka.

Configurar origem

  1. Em Origem, mantenha o valor padrão Serviço gerenciado para Apache Kafka.

  2. Em Cluster do Kafka e Modo de autenticação de origem do Kafka, mantenha os valores padrão.

  3. Em Tópico do Kafka, selecione um tópico na lista de opções disponíveis.

Configurar o formato de mensagem do Kafka

O modelo do Dataflow é compatível com os seguintes formatos de mensagem:

  • Formato de transmissão Avro Confluent: cada mensagem do Kafka inclui um byte mágico, um ID de esquema e o registro codificado em binário do Avro.

    Para formatos Avro (formato de transmissão Confluent), é possível usar um ou vários esquemas:

    • Esquema único: todas as mensagens seguem um único esquema Avro predefinido.

    • Vários esquemas: as mensagens podem usar esquemas diferentes. Isso só é compatível com o formato Avro (formato de fio do Confluent).

  • Avro (codificado em binário): as mensagens contêm apenas o payload do registro, sem metadados. É necessário fornecer um arquivo de esquema Avro (.avsc) enviado para o Cloud Storage. Todas as mensagens precisam obedecer a esse único esquema.

  • JSON: os registros não exigem um esquema predefinido. Os registros que não estão de acordo com o esquema são enviados para a fila de mensagens não entregues (se configurada) ou uma mensagem de erro é registrada. O formato aceito é {"field": "value"}. O formato [{"name": "field", "value": "value"}] não é aceito.

O Serviço gerenciado para Apache Kafka não oferece um registro de esquema. O modelo só aceita a transmissão de credenciais de autenticação para registros de esquema compatíveis com o formato Confluent-wire.

Formato de fio Avro Confluent

Se você escolher essa opção como o formato de mensagem do Kafka, configure as seguintes opções adicionais:

Origem do esquema: esse campo informa ao pipeline onde encontrar o esquema. Escolha uma das seguintes opções:

  • Registro de esquema: seus esquemas são armazenados em um registro de esquema do Confluent. Isso é útil para evoluir esquemas e gerenciar várias versões. Verifique se o registro de esquema está acessível à rede de cluster do Serviço gerenciado para Apache Kafka e hospedado na mesma região que os workers do Dataflow. É possível usar um registro de esquema com cenários de esquema único e múltiplo. Defina as seguintes configurações extras:

    • URL de conexão do registro de esquema: forneça o URL para se conectar ao registro de esquema.

    • Modo de autenticação: se o registro exigir autenticação, selecione OAuth ou TLS. Caso contrário, selecione Nenhum.

  • Arquivo de esquema único: escolha essa opção se todas as suas mensagens seguirem um esquema único e fixo definido em um arquivo.

    • Arquivo do Cloud Storage para o arquivo de esquema Avro: o caminho para o arquivo de esquema Avro usado para decodificar todas as mensagens em um tópico.

Codificação binária Avro

Se você escolher essa opção como o formato de mensagem do Kafka, configure as seguintes opções adicionais:

  • Arquivo do Cloud Storage para o arquivo de esquema Avro: o caminho para o arquivo de esquema Avro usado para decodificar todas as mensagens em um tópico.

JSON

Se você escolher essa opção como o formato de mensagem do Kafka, nenhuma outra configuração será necessária.

Especificar o deslocamento do Kafka

  1. Para evitar o reprocessamento de mensagens quando trabalhadores individuais ou todo o pipeline precisam ser reiniciados, selecione a opção Confirmar offsets no Kafka. Isso garante que o pipeline retome o processamento de onde parou, evitando o processamento duplicado e possíveis inconsistências de dados.

  2. No campo Insira o ID do grupo de consumidores, digite um nome exclusivo para o grupo do pipeline. Na maioria das circunstâncias, você quer que o pipeline leia cada mensagem uma vez e possa ser reiniciado.

  3. No campo Deslocamento inicial padrão do Kafka, o pipeline do Dataflow oferece duas opções de deslocamento inicial. Selecione uma destas opções:

    • Mais antiga: processa mensagens desde o início do tópico do Kafka.

    • Mais recente: processa mensagens a partir do último deslocamento disponível.

Configurar destino

Essas opções controlam como o pipeline de dados grava dados no Cloud Storage.

  1. Em Destino, insira o caminho do bucket e inclua o prefixo do nome do arquivo para seus arquivos de saída. O prefixo do arquivo precisa terminar com uma barra. Por exemplo, gs://test-bucket/test-prefix/

  2. Em Duração da janela, insira o período para gravar dados no Cloud Storage. Escolha o formato adequado (Ns para segundos, Nm para minutos, Nh para horas) com base nos requisitos de tratamento de dados.

  3. Em Prefixo do nome de arquivo de saída dos arquivos a serem gravados, você pode fornecer um prefixo para ser adicionado a cada arquivo de saída e melhorar a organização e a identificação.

  4. Em Número máximo de fragmentos de saída, defina o número como zero. É possível especificar o número de fragmentos a serem produzidos ao gravar arquivos. Aumentar o número pode gerar maior capacidade de processamento, mas também aumenta os custos devido a custos de embaralhamento mais altos. O serviço seleciona um número ideal quando você define o número como zero.

Configurar a fila de mensagens inativas

Às vezes, as mensagens não podem ser processadas devido a corrupção, tipos de dados incompatíveis ou incompatibilidades de esquema.

Para processar esses casos, ative a fila de mensagens inativas no modelo e forneça um nome de tabela. O modelo cria a tabela usando um esquema padronizado.

Configurar criptografia

Por padrão, todos os dados em repouso e em trânsito são criptografados por um Google-owned and Google-managed encryption key. Se você tiver chaves de criptografia gerenciadas pelo cliente (CMEK), poderá selecionar suas próprias chaves. Para mais informações sobre como configurar uma CMEK, consulte Configurar a criptografia de mensagens.

Configurar rede

É preciso especificar a rede e a sub-rede do cluster no modelo do Dataflow. A seção Parâmetros opcionais do modelo permite definir a rede para os workers do Dataflow.

O modelo Dataflow do Kafka para o Cloud Storage provisiona workers do Dataflow na rede padrão do seu projeto por padrão. Para permitir que o cluster do Serviço Gerenciado para Apache Kafka envie dados ao Cloud Storage pelo Dataflow, verifique se os workers do Dataflow podem acessar a rede do cluster.

Recomendamos que, se o cluster do Kafka não estiver conectado a uma sub-rede na rede padrão do projeto, use a rede padrão do projeto para o cluster do Kafka.

Para mais informações sobre como configurar a rede com seu pipeline do Dataflow, consulte o seguinte:

Se você tiver dificuldades para configurar a rede do Dataflow, consulte o guia de solução de problemas de rede do Dataflow.

Configurar parâmetros opcionais do Dataflow

Configure os parâmetros opcionais apenas se você souber o impacto da configuração nos workers do Dataflow. Configurações incorretas podem afetar o desempenho ou o custo. Para explicações detalhadas de cada opção, consulte Parâmetros opcionais.

Monitoramento

O modelo do Dataflow para Kafka para Cloud Storage oferece uma experiência de monitoramento que permite explorar registros, métricas e erros no console. Esse pacote de ferramentas de monitoramento está disponível como parte da interface do usuário do Dataflow.

Na guia Métricas do job, é possível criar painéis personalizados. Para o modelo do Dataflow Kafka para Cloud Storage, recomendamos configurar um painel de métricas de job que monitore o seguinte:

  • Capacidade de processamento: o volume de dados processados a qualquer momento. Isso é útil para monitorar o fluxo de dados no job e identificar possíveis problemas de desempenho.

    Para mais informações, consulte Monitoramento da capacidade de processamento do Dataflow.

  • Atualização de dados: a diferença em segundos entre o carimbo de data/hora no elemento de dados e o horário em que o evento é processado no pipeline. Isso ajuda a identificar gargalos de desempenho e de fonte de dados ou novas tentativas frequentes.

    Para mais informações, consulte Monitoramento da atualização de dados do Dataflow.

  • Backlog: a quantidade de bytes aguardando processamento. Essas informações orientam as decisões de escalonamento automático.

Para mais informações sobre o monitoramento do Dataflow, consulte a documentação do Dataflow.

Solução de problemas

Se você encontrar problemas de performance com seu pipeline do Dataflow, o Dataflow oferece um conjunto abrangente de ferramentas de diagnóstico e solução de problemas.

Confira dois cenários comuns e os respectivos guias de solução de problemas:

Para uma visão geral da depuração de pipelines do Dataflow, consulte Resolver problemas e depurar pipelines do Dataflow.

Limitações conhecidas

  • O modelo não aceita a transmissão de credenciais para autenticação no Schema Registry.

  • Ao criar o job do Dataflow Kafka para Cloud Storage, verifique se o Google Cloud project está definido como o mesmo projeto que contém o cluster do Serviço Gerenciado para Apache Kafka.

A seguir