Se devi caricare dati da un argomento Managed Service per Apache Kafka in un bucket Cloud Storage, puoi farlo con un modello Dataflow. Puoi utilizzare la console Google Cloud , l'API REST o Google Cloud CLI.
Questo documento ti aiuta a configurare il modello Kafka to Cloud Storage Dataflow utilizzando la console Google Cloud .
Google Cloud prodotti utilizzati
Il modello Kafka to Cloud Storage Dataflow utilizza i seguenti prodotti Google Cloud fatturabili. 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 Kafka to Cloud Storage Dataflow 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 auto-ripristino di Dataflow garantiscono l'esecuzione affidabile ed efficiente della pipeline.
- 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 Managed Service per Apache Kafka.
- 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 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 quanto segue:
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 Configurare il formato dei messaggi Kafka.
Abilita le seguenti API Google Cloud :
Dataflow
Cloud Storage
gcloud services enable dataflow.googleapis.com storage-api.googleapis.com \Creare un bucket Cloud Storage.
Per saperne di più su come creare un bucket Cloud Storage, consulta Crea un bucket.
Concedi il ruolo Managed Kafka Client 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
Dataflow Worker. Questo ruolo include l'autorizzazione managedkafka.clusters.connect
necessaria per stabilire le connessioni.
Per saperne di più sul account di servizio worker, consulta Sicurezza e autorizzazioni per le pipeline su Google Cloud.
Per concedere il ruolo Managed Kafka Client al account di servizio Dataflow, segui questi passaggi:
Console
- Nella console Google Cloud vai alla pagina IAM.
Vai a IAM - Verifica che il progetto sia impostato sul progetto consumer a cui accederà il client Managed Service per Apache Kafka.
- Fai clic su Concedi l'accesso.
- Nella nuova pagina, in Aggiungi entità, inserisci l'indirizzo email del account di servizio worker di Dataflow che stai utilizzando.
- In Assegna i ruoli, seleziona il ruolo Managed Kafka client.
- Fai clic su Salva.
gcloud CLI
-
Nella console Google Cloud , attiva Cloud Shell.
Nella parte inferiore della console Google Cloud 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à installata e con valori già impostati per il progetto corrente. L'inizializzazione della sessione può richiedere alcuni secondi.
-
Esegui il comando
gcloud projects add-iam-policy-binding: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 dell'account di servizio worker Dataflow.
-
Avvia 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.
-
Nella console Google Cloud , vai alla pagina Cluster.
Viene visualizzato l'elenco dei cluster che hai creato in un progetto.
- Per visualizzare la pagina dei dettagli del cluster, fai clic sul nome di un cluster.
- 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".
- Nel modello, per Modello Dataflow, aggiorna il modello a Kafka to Cloud Storage.
Configura i campi nel modello in base alle informazioni incluse nelle sezioni seguenti.
Inserisci un nome del job
Nel campo Nome job, inserisci un nome per il tuo job Dataflow.
Il nome deve essere univoco tra tutti i job attualmente in esecuzione nel progetto.
Scegliere un endpoint regionale per la pipeline
Per il campo Endpoint regionale, imposta l'endpoint regionale sulla posizione del cluster Kafka per ridurre al minimo le tariffe per il trasferimento di dati tra regioni.
I worker Dataflow possono essere eseguiti indipendentemente dalla regione del cluster Kafka. Tuttavia, se avvii worker al di fuori della regione del cluster Kafka, devi sostenere i costi per il traffico in uscita tra regioni.
Per visualizzare la posizione del cluster, segui i passaggi descritti in Elenca i cluster Managed Service per Apache Kafka.
Configura origine
Per Origine, mantieni il valore predefinito di Managed Service per Apache Kafka.
Per Cluster Kafka e Modalità di autenticazione dell'origine Kafka, mantieni i valori predefiniti.
Per Argomento Kafka, seleziona un argomento dall'elenco di argomenti disponibili.
Configurare il formato dei messaggi Kafka
Il modello Dataflow supporta i seguenti formati di messaggio:
Formato di trasmissione Avro Confluent: ogni messaggio Kafka include un byte magico, un ID schema e il record con codifica binaria Avro.
Per i formati Avro (formato di trasferimento Confluent), puoi utilizzare uno schema singolo o più schemi:
Schema singolo: tutti i messaggi rispettano un unico schema Avro predefinito.
Più schemi: i messaggi possono utilizzare schemi diversi. Questa funzionalità è supportata solo per Avro (formato wire Confluent).
Avro (codifica binaria): i messaggi contengono solo il payload del record senza metadati. Devi fornire un file dello 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 dei 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.
Managed Service per Apache Kafka non offre un registro di schema. Il modello supporta solo il trasferimento delle credenziali di autenticazione ai registri dello schema compatibili con il formato Confluent-wire.
Formato di trasferimento Avro Confluent
Se scegli questa opzione come formato 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 vengono archiviati in un registro di schema Confluent. Ciò è utile per l'evoluzione degli schemi e la gestione di più versioni. Assicurati che il registro degli schemi 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 degli schemi sia con scenari a schema singolo sia con scenari 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 Nessuno.
File schema singolo: scegli questa opzione se tutti i tuoi messaggi seguono uno schema singolo e fisso definito in un file.
- File di Cloud Storage al file dello schema Avro: il percorso del file dello schema Avro utilizzato per decodificare tutti i messaggi in un argomento.
Codifica binaria Avro
Se scegli questa opzione come formato messaggi Kafka, configura le seguenti impostazioni aggiuntive:
- File di Cloud Storage al file dello schema Avro: il percorso del file dello schema Avro utilizzato per decodificare tutti i messaggi in un argomento.
JSON
Se scegli questa opzione come formato messaggi Kafka, non sono necessarie altre configurazioni.
Specifica l'offset Kafka
Per evitare di rielaborare i messaggi quando è necessario riavviare 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 si era interrotta, evitando l'elaborazione duplicata e potenziali incongruenze dei dati.
Nel campo Inserisci ID 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 volta e che sia riavviabile.
Per il campo Offset iniziale Kafka predefinito, la pipeline Dataflow offre due opzioni di offset iniziale. Seleziona una delle seguenti opzioni:
Earliest: elabora i messaggi dall'inizio dell'argomento Kafka.
Più recente: elabora i messaggi a partire dall'offset più recente disponibile.
Configura destinazione
Queste opzioni controllano il modo in cui la pipeline di dati scrive i dati in Cloud Storage.
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/Per Durata finestra, inserisci la finestra temporale per la scrittura dei dati in Cloud Storage. Scegli il formato appropriato (
Nsper i secondi,Nmper i minuti,Nhper le ore) in base ai requisiti di elaborazione dei dati.Per Prefisso del nome file di output dei file da scrivere, puoi fornire un prefisso da aggiungere a ogni file di output per una migliore organizzazione e identificazione.
Per 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 il throughput, 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 dei messaggi non recapitabili
A volte i messaggi non possono essere elaborati a causa di danneggiamento, tipi di dati incompatibili o mancata corrispondenza dello schema.
Per gestire questi casi, attiva la coda dei 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 a riposo e in transito sono criptati da un Google-owned and Google-managed encryption key. Se hai chiavi di crittografia gestite dal cliente (CMEK), puoi selezionare le tue chiavi. Per saperne di più 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 consente di definire la rete per i worker Dataflow.
Per impostazione predefinita, il modello Kafka to Cloud Storage Dataflow esegue il provisioning dei worker Dataflow nella rete predefinita del tuo 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.
Se il cluster Kafka non è connesso a una subnet nella rete predefinita del progetto, ti consigliamo di utilizzare la rete predefinita del progetto per il cluster Kafka.
Per maggiori informazioni sulla configurazione del networking con la pipeline Dataflow, consulta quanto segue:
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, vedi Parametri facoltativi.
Monitoraggio
Il modello Dataflow per Kafka a 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 nell'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:
Velocità effettiva: il volume di dati elaborati in un dato momento. Ciò è utile per monitorare il flusso di dati attraverso il job e identificare potenziali problemi di prestazioni.
Per ulteriori informazioni, consulta Monitoraggio della velocità effettiva di Dataflow.
Aggiornamento dei dati: la differenza in secondi tra il timestamp dell'elemento di dati e l'ora in cui l'evento viene elaborato nella pipeline. Ciò è utile per identificare i colli di bottiglia delle prestazioni e delle origini dati o i tentativi frequenti.
Per saperne di più, consulta Monitoraggio dell'aggiornamento dei dati di Dataflow.
Backlog: la quantità di byte in attesa di elaborazione. Queste informazioni vengono utilizzate per prendere decisioni in merito alla scalabilità automatica.
Per saperne di più sul monitoraggio di Dataflow, consulta la documentazione sul monitoraggio di Dataflow.
Risoluzione dei problemi
Se riscontri problemi di prestazioni con la pipeline Dataflow, Dataflow fornisce un insieme completo di strumenti di risoluzione dei problemi e diagnostica.
Di seguito sono riportati due scenari comuni e le rispettive guide alla risoluzione dei problemi:
Risolvi i problemi relativi alle pipeline di streaming lente o bloccate.
Risoluzione dei problemi relativi ai lead in ritardo nelle pipeline.
Per una panoramica generale del debug delle pipeline Dataflow, consulta Risolvere i problemi e eseguire il debug delle pipeline Dataflow.
Limitazioni note
Il modello non supporta il trasferimento delle credenziali per l'autenticazione al tuo Schema Registry.
Quando crei il job Dataflow Kafka to Cloud Storage, assicurati che il progetto Google Cloud sia impostato sullo stesso progetto che contiene il cluster Managed Service per Apache Kafka.