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:
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.
Abilita le seguenti Google Cloud API:
Dataflow
Cloud Storage
gcloud services enable dataflow.googleapis.com storage-api.googleapis.com \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
- Nella Google Cloud console vai alla pagina IAM.
Vai a IAM - Verifica che il progetto sia impostato sul progetto consumer a cui il client Managed Service per Apache Kafka accederà.
- Fai clic su Concedi l'accesso.
- Nella nuova pagina, in Aggiungi entità, inserisci l'indirizzo email del account di servizio worker Dataflow che stai utilizzando.
- In Assegna i ruoli, seleziona il ruolo Client Kafka gestito.
- Fai clic su Salva.
Gcloud CLI
-
Nella Google Cloud console, 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.
-
Esegui il
gcloud projects add-iam-policy-bindingcomando: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.
-
Nella Google Cloud console vai alla pagina Cluster.
Vengono elencati i cluster creati 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, 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
Per Origine, mantieni il valore predefinito Managed Service per Apache Kafka.
Per Cluster Kafka e Modalità di autenticazione dell'origine Kafka, mantieni i valori predefiniti.
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
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.
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.
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.
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/In Durata della 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.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.
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:
Velocità effettiva: il volume di dati elaborati in un determinato momento. Questa opzione è utile per monitorare il flusso di dati tramite 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 dati e il momento in cui l'evento viene elaborato nella pipeline. Questa opzione consente di identificare i colli di bottiglia delle prestazioni e delle origini dati o i tentativi ripetuti frequenti.
Per ulteriori informazioni, consulta Monitoraggio dell'aggiornamento dei dati di Dataflow.
Backlog: la quantità di byte in attesa di elaborazione. Queste informazioni vengono utilizzate per le decisioni di scalabilità automatica.
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:
Risolvere i problemi relativi alle pipeline di flusso lente o bloccate.
Risolvere i problemi relativi ai ritardatari nelle pipeline.
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.