Accedere ai dati Kafka in Cloud Storage

Se devi caricare dati da un argomento di Google Cloud Managed Service per Apache Kafka in un bucket Cloud Storage, puoi farlo con un modello Dataflow. Puoi utilizzare la Google Cloud console, l'API REST o Google Cloud CLI.

Questo documento ti aiuta a configurare il modello Dataflow da Kafka a Cloud Storage utilizzando la Google Cloud console.

Google Cloud Prodotti utilizzati

Il modello Dataflow da Kafka a Cloud Storage utilizza i seguentiprodotti fatturabili. Google Cloud Utilizza il calcolatore prezzi per generare una stima dei costi in base all'utilizzo previsto.

  • Dataflow: Dataflow è un servizio di elaborazione dei dati completamente gestito. Il modello Dataflow da Kafka a Cloud Storage utilizza Dataflow per creare una pipeline che legge i dati dall'argomento Kafka, esegue le trasformazioni necessarie e li scrive in Cloud Storage. Le funzionalità di scalabilità automatica e autoriparazione di Dataflow garantiscono che la pipeline venga eseguita in modo affidabile ed efficiente.
  • Cloud Storage: funge da destinazione per i dati Kafka. Avrai bisogno di un bucket Cloud Storage per archiviare i dati trasferiti dalla pipeline Dataflow.

Inoltre, la soluzione utilizza anche Google Cloud Managed Service per Apache Kafka.

  • Google Cloud Managed Service per Apache Kafka: un Google Cloud servizio che ti aiuta a eseguire Apache Kafka. Fornisce i dati di origine per la pipeline. Avrai bisogno di un cluster e di un argomento Managed Service per Apache Kafka esistenti con i dati che vuoi trasferire a Cloud Storage. Per ulteriori informazioni sui prezzi di Google Cloud Managed Service per Apache Kafka, consulta la guida ai prezzi.

Prima di iniziare

Prima di avviare il modello Dataflow da Kafka a Cloud Storage, assicurati di aver completato i seguenti passaggi:

  1. Crea un cluster e un argomento Managed Service per Apache Kafka.

    Un modo per creare un cluster e un argomento è seguire la guida rapida di Managed Service per Apache Kafka.

    Se l'argomento contiene record Avro, per ulteriori requisiti di risorse, consulta Specificare il formato del messaggio.

  2. Abilita le seguenti Google Cloud API:

    • Dataflow

    • Cloud Storage

    gcloud services enable dataflow.googleapis.com storage-api.googleapis.com \
    
  3. Crea un bucket Cloud Storage.

    Per ulteriori informazioni su come creare un bucket Cloud Storage, consulta Creare un bucket.

Concedere il ruolo di client Kafka gestito al account di servizio worker Dataflow

Per connettere il job Dataflow a Managed Service per Apache Kafka, devi concedere autorizzazioni specifiche al account di servizio worker Dataflow. Questo account di servizio è l'identità utilizzata per tutte le VM worker nel job Dataflow e tutte le richieste effettuate da queste VM utilizzano questo account.

Per consentire l'accesso alle risorse Kafka, devi concedere il ruolo roles/managedkafka.client al account di servizio worker Dataflow. Questo ruolo include l'autorizzazione managedkafka.clusters.connect necessaria per stabilire le connessioni.

Per ulteriori informazioni sul account di servizio worker, consulta Sicurezza e autorizzazioni per le pipeline su Google Cloud.

Per concedere il ruolo client Kafka gestito al account di servizio Dataflow, segui questi passaggi:

Console

  1. Nella Google Cloud console vai alla pagina IAM.
    Vai a IAM
  2. Verifica che il progetto sia impostato sul progetto consumer a cui il client Managed Service per Apache Kafka accederà.
  3. Fai clic su Concedi l'accesso.
  4. Nella nuova pagina, in Aggiungi entità, inserisci l'indirizzo email del account di servizio worker Dataflow che stai utilizzando.
  5. In Assegna i ruoli, seleziona il ruolo Client Kafka gestito.
  6. Fai clic su Salva.

Gcloud CLI

  1. Nella Google Cloud console, attiva Cloud Shell.

    Attiva Cloud Shell

    Nella parte inferiore della Google Cloud console viene avviata una sessione di Cloud Shell e viene visualizzato un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già inclusa e installata e con valori già impostati per il progetto corrente. L'inizializzazione della sessione può richiedere alcuni secondi.

  2. Esegui il gcloud projects add-iam-policy-binding comando:

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

    Sostituisci quanto segue:

    • PROJECT_ID è l'ID progetto.

    • SERVICE_ACCOUNT_EMAIL è l'indirizzo email del account di servizio worker Dataflow.

Avviare il modello Dataflow da Kafka a Cloud Storage

Puoi avviare il modello Dataflow da Kafka a Cloud Storage dalla pagina dei dettagli del cluster nella console.

  1. Nella Google Cloud console vai alla pagina Cluster.

    Vai a Cluster

    Vengono elencati i cluster creati in un progetto.

  2. Per visualizzare la pagina dei dettagli del cluster, fai clic sul nome di un cluster.
  3. Nella pagina dei dettagli del cluster, fai clic su Importa dati.

    Si apre la pagina Crea un job Dataflow utilizzando il modello "Kafka to Kafka".

  4. Nel modello, in Modello Dataflow, aggiorna il modello a Kafka to Cloud Storage.

Configura i campi nel modello in base alle informazioni incluse nelle sezioni seguenti.

Inserire un nome job

Nel campo Nome job, inserisci un nome per il job Dataflow.

Il nome deve essere univoco tra tutti i job attualmente in esecuzione nel progetto.

Scegliere un endpoint regionale per la pipeline

Nel campo Endpoint regionale, imposta l'endpoint regionale sulla località del cluster Kafka per ridurre al minimo le tariffe di trasferimento dei dati tra regioni.

I worker Dataflow possono essere eseguiti indipendentemente dalla regione del cluster Kafka. Tuttavia, se avvii i worker al di fuori della regione del cluster Kafka, dovrai sostenere i costi per il traffico in uscita tra regioni.

Per visualizzare la località del cluster, segui i passaggi descritti in Elencare i cluster Managed Service per Apache Kafka.

Configura origine

  1. Per Origine, mantieni il valore predefinito Managed Service per Apache Kafka.

  2. Per Cluster Kafka e Modalità di autenticazione dell'origine Kafka, mantieni i valori predefiniti.

  3. In Argomento Kafka, seleziona un argomento dall'elenco degli argomenti disponibili.

Configurare il formato dei messaggi Kafka

Il modello Dataflow supporta i seguenti tre formati di messaggi:

  • Formato wire Avro Confluent: ogni messaggio Kafka include un byte magico, un ID schema e il record con codifica binaria Avro.

    Per i formati Avro (formato wire Confluent), puoi utilizzare uno o più schemi:

    • Schema singolo: tutti i messaggi rispettano un singolo schema Avro predefinito.

    • Più schemi: i messaggi possono utilizzare schemi diversi. Questa opzione è supportata solo per il formato wire Avro (Confluent).

  • Avro (con codifica binaria): i messaggi contengono solo il payload del record senza metadati. Devi fornire un file di schema Avro (.avsc) caricato in Cloud Storage. Tutti i messaggi devono rispettare questo singolo schema.

  • JSON: i record non richiedono uno schema predefinito. I record che non sono conformi allo schema vengono inviati alla coda di messaggi non recapitabili (se configurata) o viene registrato un messaggio di errore. Il formato supportato è {"field": "value"}. Il formato [{"name": "field", "value": "value"}] non è supportato.

Google Cloud Managed Service per Apache Kafka non offre un registro di schema. Il modello supporta solo il passaggio delle credenziali di autenticazione ai registri di schema compatibili con il formato wire Confluent.

Formato wire Avro Confluent

Se scegli questa opzione come Formato dei messaggi Kafka, configura le seguenti impostazioni aggiuntive:

Origine schema: questo campo indica alla pipeline dove trovare lo schema. Scegli una delle seguenti opzioni:

  • Registro di schema: gli schemi sono archiviati in un registro di schema Confluent. Questa opzione è utile per l'evoluzione degli schemi e la gestione di più versioni. Assicurati che il registro di schema sia accessibile alla rete del cluster Managed Service per Apache Kafka e che sia ospitato nella stessa regione dei worker Dataflow. Puoi utilizzare un registro di schema sia con scenari a schema singolo sia a più schemi. Configura le seguenti impostazioni aggiuntive:

    • URL di connessione al registro di schema: fornisci l'URL per connetterti al registro di schema.

    • Modalità di autenticazione: se il registro richiede l'autenticazione, seleziona OAuth o TLS. In caso contrario, seleziona Nessuna.

  • File di schema singolo: scegli questa opzione se tutti i messaggi seguono un singolo schema fisso definito in un file.

    • File di Cloud Storage per il file di schema Avro: il percorso del file di schema Avro utilizzato per decodificare tutti i messaggi in un argomento.

Codifica binaria Avro

Se scegli questa opzione come Formato dei messaggi Kafka, configura le seguenti impostazioni aggiuntive:

  • File di Cloud Storage per il file di schema Avro: il percorso del file di schema Avro utilizzato per decodificare tutti i messaggi in un argomento.

JSON

Se scegli questa opzione come Formato dei messaggi Kafka, non sono necessarie altre configurazioni.

Specificare l'offset Kafka

  1. Per evitare di rielaborare i messaggi quando è necessario riavviare i singoli worker o l'intera pipeline, seleziona l'opzione Esegui il commit degli offset in Kafka. In questo modo, la pipeline riprende l'elaborazione dal punto in cui è stata interrotta, evitando l'elaborazione duplicata e potenziali incoerenze dei dati.

  2. Nel campo Inserisci l'ID del gruppo di consumer, inserisci un nome univoco per il gruppo di questa pipeline. Nella maggior parte dei casi, vuoi che la pipeline legga ogni messaggio una sola volta e che sia riavviabile.

  3. Per il campo Offset di avvio Kafka predefinito, la pipeline Dataflow offre due opzioni di offset di avvio. Seleziona una delle seguenti opzioni:

    • Earliest: elabora i messaggi dall'inizio dell'argomento Kafka.

    • Latest: elabora i messaggi a partire dall'offset disponibile più recente.

Configura destinazione

Queste opzioni controllano il modo in cui la pipeline di dati scrive i dati in Cloud Storage.

  1. In Destinazione, inserisci il percorso del bucket e includi il prefisso del nome file per i file di output. Il prefisso del file deve terminare con una barra. Ad esempio, gs://test-bucket/test-prefix/

  2. In Durata della finestra, inserisci la finestra temporale per la scrittura dei dati in Cloud Storage. Scegli il formato appropriato (Ns per i secondi, Nm per i minuti, Nh per le ore) in base ai requisiti di elaborazione dei dati.

  3. In Prefisso del nome file dei file da scrivere, puoi fornire un prefisso da aggiungere a ogni file di output per una migliore organizzazione e identificazione.

  4. In Numero massimo di shard di output, imposta il numero su zero. Puoi specificare il numero di shard da produrre durante la scrittura dei file. L'aumento del numero può aumentare la velocità effettiva, ma comporta anche un aumento dei costi a causa dei costi di shuffle più elevati. Il servizio seleziona un numero ottimale quando imposti il numero su zero.

Configurare la coda di messaggi non recapitabili

A volte i messaggi non possono essere elaborati a causa di danneggiamenti, tipi di dati incompatibili o mancata corrispondenza dello schema.

Per gestire questi casi, abilita la coda di messaggi non recapitabili nel modello e fornisci un nome tabella. Il modello crea la tabella utilizzando uno schema standardizzato.

Configura la crittografia

Per impostazione predefinita, tutti i dati at-rest e in transito vengono criptati da a Google-owned and Google-managed encryption key. Se hai chiavi di crittografia gestite dal cliente (CMEK), puoi selezionare le tue chiavi. Per ulteriori informazioni su come configurare una CMEK, consulta Configurare la crittografia dei messaggi.

Configura il networking

Devi specificare la rete e la subnet del cluster nel modello Dataflow. La sezione Parametri facoltativi del modello ti consente di definire la rete per i worker Dataflow.

Per impostazione predefinita, il modello Dataflow da Kafka a Cloud Storage esegue il provisioning dei worker Dataflow nella rete predefinita del progetto. Per consentire al cluster Managed Service per Apache Kafka di inviare dati a Cloud Storage tramite Dataflow, assicurati che i worker Dataflow possano accedere alla rete del cluster.

Ti consigliamo di utilizzare la rete predefinita del progetto per il cluster Kafka se quest'ultimo non è connesso a una subnet nella rete predefinita del progetto.

Per ulteriori informazioni sulla configurazione del networking con la pipeline Dataflow, consulta:

Se riscontri difficoltà nella configurazione del networking Dataflow, consulta la guida alla risoluzione dei problemi di networking Dataflow.

Configurare i parametri Dataflow facoltativi

Configura i parametri facoltativi solo se conosci l'impatto della configurazione sui worker Dataflow. Impostazioni errate possono influire sulle prestazioni o sui costi. Per spiegazioni dettagliate di ogni opzione, consulta Parametri facoltativi.

Monitoraggio

Il modello Dataflow per Kafka to Cloud Storage offre un'esperienza di monitoraggio che ti consente di esplorare log, metriche ed errori all'interno della console. Questa suite di strumenti di monitoraggio è disponibile come parte dell'interfaccia utente di Dataflow.

La scheda Metriche job ti consente di creare dashboard personalizzate. Per il modello Dataflow Kafka to Cloud Storage , ti consigliamo di configurare una dashboard Metriche job che monitori quanto segue:

Per ulteriori informazioni sul monitoraggio di Dataflow, consulta la documentazione di monitoraggio di Dataflow.

Risoluzione dei problemi

Se riscontri problemi di prestazioni con la pipeline Dataflow, Dataflow fornisce un set completo di strumenti di risoluzione dei problemi e diagnostici.

Di seguito sono riportati due scenari comuni e le rispettive guide alla risoluzione dei problemi:

Per una panoramica generale del debug delle pipeline Dataflow, consulta Risolvere i problemi ed eseguire il debug delle pipeline Dataflow.

Limitazioni note

  • Il modello non supporta il passaggio delle credenziali per l'autenticazione al registro di schema.

  • Quando crei il job Dataflow Kafka to Cloud Storage, assicurati che il Google Cloud progetto sia impostato sullo stesso progetto che contiene il cluster Managed Service per Apache Kafka.

Apache Kafka® è un marchio registrato di Apache Software Foundation o delle sue affiliate negli Stati Uniti e/o in altri paesi.

Passaggi successivi