Os conectores de coletor do Cloud Storage transmitem dados do Kafka para buckets do Cloud Storage, o que permite armazenar e processar grandes volumes de dados de maneira econômica e escalonável.
Os casos de uso dos conectores de coletor do Cloud Storage incluem o seguinte:
Ingestão de data lake. Armazene dados do Kafka em um data lake para arquivamento de longo prazo e processamento em lote.
Arquive dados para atender aos requisitos regulatórios.
Antes de começar
Antes de criar um conector de coletor do Cloud Storage, verifique se você tem o seguinte:
Crie um cluster do Serviço Gerenciado para Apache Kafka para seu cluster do Connect. Esse é o cluster principal do Kafka associado ao cluster do Connect. Esse também é o cluster de origem que forma uma extremidade do pipeline do conector.
Crie um cluster do Connect para hospedar o conector de coletor do Cloud Storage.
Crie um bucket do Cloud Storage para armazenar os dados transmitidos do Kafka.
Crie e configure um tópico do Kafka no cluster de origem. Os dados são movidos desse tópico do Kafka para o bucket de destino do Cloud Storage.
Papéis e permissões necessárias
Para ter as permissões necessárias para criar um conector, peça ao administrador para conceder a você o papel do IAM de editor de conector do Kafka gerenciado (roles/managedkafka.connectorEditor) no projeto.
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Esse papel predefinido contém as permissões necessárias para criar um conector. Para acessar as permissões exatas que são necessárias, expanda a seção Permissões necessárias:
Permissões necessárias
As seguintes permissões são necessárias para criar um conector:
-
Criar um conector:
managedkafka.connectors.create
Essas permissões também podem ser concedidas com papéis personalizados ou outros papéis predefinidos.
Conceder permissões para gravar no bucket do Cloud Storage
A conta de serviço do Kafka gerenciado precisa ter as seguintes permissões para gravar mensagens no bucket do Cloud Storage:
storage.objects.createstorage.objects.delete
Conceda o papel Usuário de objetos do Storage (roles/storage.objectUser) à conta de serviço no projeto que contém o bucket do Cloud Storage.
A conta de serviço do Kafka gerenciado tem o seguinte formato:
service-PROJECT_NUMBER@gcp-sa-managedkafka.iam.gserviceaccount.com,
em que PROJECT_NUMBER é o número do projeto do cluster do Connect.
Se o cluster do Connect estiver em um projeto diferente do cluster do Serviço Gerenciado para Apache Kafka cluster, consulte Criar um cluster do Connect em um projeto diferente.
Criar um conector de coletor do Cloud Storage
Para criar um conector de coletor do Cloud Storage, siga estas etapas.
Console
No Google Cloud console, acesse a página Clusters do Connect.
Clique no cluster do Connect para o qual você quer criar o conector.
A página Detalhes do cluster do Connect é exibida.
Clique em Criar conector.
A página Criar conector do Kafka é exibida.
Para o nome do conector, insira uma string.
Para conferir as diretrizes de nomeação de um conector, consulte Diretrizes de nomeação de recursos do Serviço Gerenciado para Apache Kafka.
Em Plug-in do conector, selecione Coletor do Cloud Storage.
Especifique os tópicos de que você pode transmitir dados.
Escolha o bucket de armazenamento para armazenar os dados.
(Opcional) Defina outras configurações na seção Configuração.
Selecione a Política de reinicialização da tarefa. Para mais informações, consulte Política de reinicialização da tarefa.
Clique em Criar.
gcloud
-
No Google Cloud console, ative o Cloud Shell.
Na parte de baixo do Google Cloud console, uma sessão do Cloud Shell é iniciada e exibe um prompt de linha de comando. O Cloud Shell é um ambiente shell com a Google Cloud CLI já instalada e com valores já definidos para o projeto atual. A inicialização da sessão pode levar alguns segundos.
Execute o
gcloud managed-kafka connectors createcomando:gcloud managed-kafka connectors create CONNECTOR_ID \ --location=LOCATION \ --connect-cluster=CONNECT_CLUSTER_ID \ --config-file=CONFIG_FILESubstitua:
CONNECTOR_ID: o ID ou nome do conector. Para conferir as diretrizes de nomeação de um conector, consulte Diretrizes de nomeação de recursos do Serviço Gerenciado para Apache Kafka. O nome de um conector não pode ser modificado.LOCATION: o local em que você cria o conector. Precisa ser o mesmo local em que você criou o cluster do Connect.CONNECT_CLUSTER_ID: o ID do cluster do Connect em que o conector é criado.CONFIG_FILE: o caminho para o arquivo de configuração YAML do conector.
Confira um exemplo de arquivo de configuração do conector de coletor do Cloud Storage:
connector.class: "io.aiven.kafka.connect.gcs.GcsSinkConnector" gcs.bucket.name: "BUCKET_NAME" gcs.credentials.default: "true" format.output.type: "json" key.converter: "org.apache.kafka.connect.storage.StringConverter" value.converter: "org.apache.kafka.connect.json.JsonConverter" value.converter.schemas.enable: "false" topics: "TOPIC_LIST" tasks.max: "3"Substitua:
BUCKET_NAME: o nome do bucket do Cloud Storage em que você quer gravar.TOPIC_LIST: uma lista separada por vírgulas de tópicos do Kafka para ler. A lista também pode incluir expressões regulares.
Terraform
É possível usar um recurso do Terraform para criar um conector.
Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.
Go
Antes de testar esta amostra, siga as instruções de configuração do Go em Instalar as bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Go do Serviço Gerenciado para Apache Kafka.
Para autenticar o Serviço Gerenciado para Apache Kafka, configure o Application Default Credentials(ADC). Para mais informações, consulte Configurar o ADC para um ambiente de desenvolvimento local.
Java
Antes de testar esta amostra, siga as instruções de configuração do Java em Instalar as bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Java do Serviço Gerenciado para Apache Kafka.
Para autenticar o Serviço Gerenciado para Apache Kafka, configure o Application Default Credentials. Para mais informações, consulte Configurar o ADC para um ambiente de desenvolvimento local.
Python
Antes de testar esta amostra, siga as instruções de configuração do Python em Instalar as bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Python do Serviço Gerenciado para Apache Kafka.
Para autenticar o Serviço Gerenciado para Apache Kafka, configure o Application Default Credentials. Para mais informações, consulte Configurar o ADC para um ambiente de desenvolvimento local.
Depois de criar um conector, é possível editar, excluir, pausar, interromper ou reiniciar o conector.
Configurar o conector
Para uma lista completa das propriedades específicas desse conector, consulte Configuração na documentação do conector de coletor do Cloud Storage.
Campos de saída
Por padrão, o conector grava apenas o valor do registro de cada registro do Kafka.
Para incluir chaves ou cabeçalhos de registro, defina a propriedade format.output.fields como uma lista separada por vírgulas de campos a serem incluídos. Os campos aceitos são key, value, headers e timestamp. Exemplo:
format.output.fields=key,value,headers
Formatos de saída
O conector oferece suporte à gravação de registros do Kafka nos formatos CSV, JSON e Parquet. As seções a seguir descrevem como configurar o formato de saída.
Formato CSV
Para gravar arquivos CSV no Cloud Storage, defina format.output.type=csv.
Use os seguintes conversores:
Conversor de chaves:
org.apache.kafka.connect.storage.StringConverterouorg.apache.kafka.connect.json.JsonConverterConversor de valores:
org.apache.kafka.connect.converters.ByteArrayConverter
Formato JSON
Para gravar arquivos formatados em JSON no Cloud Storage, defina format.output.type como um dos seguintes valores:
json: cada arquivo de saída contém uma única matriz de objetos JSON, em que cada objeto JSON representa um registro do Kafka.jsonl: o conector grava cada registro do Kafka como um objeto JSON em uma linha separada.
O exemplo a seguir mostra como o conector grava um registro do Kafka no formato JSON:
{"headers":[{"key":"k1","value":"v1"},{"key":"k2","value":"v2"}],"value":"Hello world","key":"my-key"}
Se você definir o conversor de chaves ou valores como org.apache.kafka.connect.converters.ByteArrayConverter, o conector gravará esse campo como um valor codificado em base64.
O conector não inclui um esquema JSON na saída, mesmo que value.converter.schemas.enable seja true.
Formato Parquet
Para gravar arquivos Parquet no Cloud Storage, defina format.output.type=parquet.
Se o conversor de chaves ou valores for org.apache.kafka.connect.json.JsonConverter, os dados JSON precisarão incluir um esquema. Defina a propriedade schemas.enable do conversor como true.
Para dados JSON, o conector grava os dados como um tipo struct no arquivo Parquet. Por exemplo, se o valor do registro do Kafka tiver um campo chamado userid, o
conector gravará uma coluna chamada value.userid. Para nivelar os nomes das colunas, defina format.output.envelope=false. Se format.output.envelope for false, então
format.output.fields precisará especificar um único campo de saída.
Configurações de arquivo do Cloud Storage
As configurações a seguir controlam como o conector grava arquivos no Cloud Storage.
gcs.bucket.name: obrigatório. Especifica o nome do bucket do Cloud Storage em que o conector grava dados.file.compression.type: especifica o tipo de compactação dos arquivos de saída. Exemplos sãogzip,snappy,zstdenone. O valor padrão énone.file.name.prefix: especifica um prefixo a ser adicionado ao nome de cada arquivo. O valor padrão está vazio ("").file.name.template: especifica um modelo para o nome do arquivo. O conector oferece suporte a variáveis de marcador de posição para o modelo, como{{topic}}para o nome do tópico e{{partition}}para o número da partição. Para mais informações, consulte a documentação do conector de coletor do Cloud Storage.file.max.records: o número máximo de registros a serem gravados em um único arquivo. Se o valor for 0, não haverá um máximo específico. O valor padrão é 0.file.max.bytes: o tamanho máximo do arquivo a ser gravado, em bytes. Se o valor for 0, não haverá um máximo específico. O valor padrão é 0.
Agrupamento de registros
Quando o conector de coletor do Cloud Storage grava registros do Kafka, ele agrupa os registros por tópico e partição por padrão. Por exemplo, os registros da
partição 0 do tópico my-topic são gravados em arquivos chamados
my-topic-0-OFFSET, em que
OFFSET é o deslocamento inicial.
Se o parâmetro file.name.template incluir a variável de marcador de posição
{{key}}, o conector agrupa os registros por chave. Nesse modo, o conector grava um arquivo separado para cada chave de registro. O conector substitui cada arquivo pelo registro mais recente dessa chave.
Credenciais
A propriedade gcs.credentials.default precisa ser definida como true. Essa configuração
permite que o conector descubra as credenciais automaticamente. Google Cloud