Il servizio Dataflow gestisce completamente le risorse in Google Cloud
su base di job. Sono incluse l'avvio e l'arresto delle istanze Compute Engine (a volte indicate come workers
o VMs
) e l'accesso ai bucket Cloud Storage del progetto sia per l'I/O sia per lo staging dei file temporanei. Tuttavia, se la pipeline interagisce con le tecnologie di archiviazione dei dati di Google Cloud come BigQuery e Pub/Sub, devi gestire le risorse e la quota per questi servizi.
Dataflow utilizza una posizione fornita dall'utente in Cloud Storage appositamente per la gestione temporanea dei file. Questa posizione è sotto il tuo controllo e devi assicurarti che la sua durata venga mantenuta finché un job la legge. Puoi riutilizzare la stessa posizione di staging per più esecuzioni di job, poiché la memorizzazione nella cache integrata dell'SDK può accelerare la data e l'ora di inizio dei job.
Job
Puoi eseguire fino a 25 job Dataflow simultanei per progetto Google Cloud. Tuttavia, questo limite può essere aumentato contattando l'assistenza Google Cloud. Per ulteriori informazioni, consulta Quote.
Al momento, il servizio Dataflow è limitato all'elaborazione di richieste di job JSON di dimensioni non superiori a 20 MB. La dimensione della richiesta di job è legata in modo specifico alla rappresentazione JSON della pipeline; una pipeline più grande comporta una richiesta più grande.
Per stimare le dimensioni della richiesta JSON della pipeline, esegui la pipeline con la seguente opzione:
Java
--dataflowJobFile=<path to output file>
Python
--dataflow_job_file=<path to output file>
Vai
La stima delle dimensioni del payload JSON di un job con un flag non è attualmente supportata in Go.
Questo comando scrive una rappresentazione JSON del job in un file. Le dimensioni del file serializzato sono una buona stima delle dimensioni della richiesta; le dimensioni effettive saranno leggermente superiori a causa di alcune informazioni aggiuntive incluse nella richiesta.
Per ulteriori informazioni, consulta la pagina di risoluzione dei problemi relativa a "413 Request Entity Too Large" / "The size of serialized JSON representation of the pipeline exceeds the allowable limit".
Inoltre, le dimensioni del grafico del job non devono superare i 10 MB. Per ulteriori informazioni, consulta la pagina di risoluzione dei problemi relativa a "Il grafo del job è troppo grande. Riprova con un grafo di job più piccolo o suddividi il job in due o più job più piccoli."
Worker
Al momento, il servizio Dataflow consente un massimo di 1000 istanze Compute Engine per job. Per i job batch, il tipo di macchina predefinito è n1-standard-1
. Per i job in streaming, il tipo di macchina predefinito per i job abilitati per Streaming Engine è n1-standard-2
e il tipo di macchina predefinito per i job non Streaming Engine è n1-standard-4
. Quando utilizzi i tipi di macchine predefiniti, il servizio Dataflow può quindi allocare fino a 4000 core per job. Se hai bisogno di più core per il tuo job, puoi selezionare un
tipo di macchina più grande.
Non tentare di gestire o interagire direttamente con il gruppo di istanze gestite di Compute Engine. Il servizio Dataflow si occuperà di tutto. La modifica manuale di qualsiasi risorsa Compute Engine associata al tuo job Dataflow è un'operazione non supportata.
Puoi utilizzare qualsiasi famiglia di tipo di macchina Compute Engine disponibile, nonché i tipi di macchine personalizzate. Per risultati ottimali, utilizza i tipi di macchine n1
. I tipi di macchine con core condivisi, come i worker delle serie f1
e g1
, non sono supportati dall'accordo sul livello del servizio di Dataflow.
Per allocare memoria aggiuntiva per thread di lavoro, utilizza un tipo di macchina personalizzata con memoria estesa. Ad esempio, custom-2-15360-ext
è un tipo di macchina n1
con 2 CPU e 15 GB di memoria. Dataflow prende in considerazione il numero di CPU
in una macchina per determinare il numero di thread worker per VM worker. Se la pipeline elabora attività che richiedono molta memoria, un tipo di macchina personalizzata con memoria estesa può fornire più memoria per thread di lavoro. Per saperne di più, consulta Creare un'istanza VM personalizzata.
Dataflow fattura in base al numero di vCPU e GB di memoria nei worker. La fatturazione è indipendente dalla famiglia di tipo di macchina. Puoi specificare un tipo di macchina per la pipeline impostando il parametro di esecuzione appropriato al momento della creazione della pipeline.
Java
Per modificare il tipo di macchina, imposta l'opzione --workerMachineType
.
Python
Per modificare il tipo di macchina, imposta l'opzione --worker_machine_type
.
Vai
Per modificare il tipo di macchina, imposta l'opzione ‑‑worker_machine_type
.
Quota per le risorse
Il servizio Dataflow verifica che il progetto Google Cloud abbia la quota di risorse Compute Engine necessaria per eseguire il job, sia per avviarlo sia per scalare fino al numero massimo di istanze worker. Il job non potrà essere avviato se non è disponibile una quota di risorse sufficiente.
Se il job Dataflow esegue il deployment di macchine virtuali Compute Engine come gruppo di istanze gestite, devi assicurarti che il progetto soddisfi alcuni requisiti di quota aggiuntivi. Nello specifico, il progetto avrà bisogno di uno dei seguenti tipi di quota per ogni job Dataflow simultaneo che vuoi eseguire:
- Un gruppo di istanze per job
- Un gruppo di istanze gestite per job
- Un modello di istanza per job
Attenzione: la modifica manuale del modello di istanze o del gruppo di istanze gestite del job Dataflow non è consigliata o supportata. Utilizza invece le opzioni di configurazione della pipeline di Dataflow.
La funzionalità di scalabilità automatica orizzontale di Dataflow è limitata dalla quota Compute Engine disponibile del progetto. Se il tuo job ha una quota sufficiente all'avvio, ma un altro job utilizza il resto della quota disponibile del progetto, il primo job verrà eseguito, ma non potrà essere scalato completamente.
Tuttavia, il servizio Dataflow non gestisce gli aumenti di quota per i job che superano le quote di risorse del progetto. Sei responsabile di effettuare le richieste necessarie per una quota di risorse aggiuntiva, per la quale puoi utilizzare la console Google Cloud.
Indirizzi IP
Per impostazione predefinita, Dataflow assegna indirizzi IP sia pubblici che privati alle VM worker. Un indirizzo IP pubblico soddisfa uno dei criteri per l'accesso a internet, ma viene conteggiato anche per la quota di indirizzi IP esterni.
Se le VM di lavoro non hanno bisogno di accedere a internet pubblico, ti consigliamo di utilizzare solo indirizzi IP interni, che non vengono conteggiati nella quota esterna. Per ulteriori informazioni sulla configurazione degli indirizzi IP, consulta le seguenti risorse:
Worker inattivi
Se i lavoratori di un determinato job non mostrano un'attività sufficiente in un periodo di un'ora, il job non va a buon fine. L'inattività dei lavoratori può essere causata da problemi di gestione delle dipendenze. Ad esempio, se un worker riscontra un problema durante l'installazione delle dipendenze per un'immagine container personalizzata, potrebbe non riuscire ad avviarsi o a progredire. La mancanza di avanzamento potrebbe causare il fallimento del job. Per scoprire di più, vedi:
- Risolvere i problemi relativi ai container personalizzati in Dataflow
- Errore durante la sincronizzazione del pod ... impossibile "avviare il contenitore"
Risorse dei dischi permanenti
Il servizio Dataflow è limitato a 15 dischi permanenti per istanza di worker quando viene eseguito un job di streaming. Ogni disco permanente è locale per una singola macchina virtuale Compute Engine. Il tuo job non può avere più worker di dischi permanenti. Un rapporto 1:1 tra worker e dischi è la quantità minima di risorse allocata.
I job che utilizzano Streaming Engine utilizzano dischi di avvio da 30 GB. I job che utilizzano Dataflow Shuffle utilizzano dischi di avvio di 25 GB. Per i job che non utilizzano queste offerte, la dimensione predefinita di ogni disco permanente è di 250 GB in modalità batch e 400 GB in modalità streaming.
Località
Per impostazione predefinita, il servizio Dataflow esegue il deployment delle risorse Compute Engine nella zona us-central1-f
della regione us-central1
. Puoi override questa impostazione specificando il parametro --region
. Se devi utilizzare una zona specifica per le risorse,
utilizza il parametro --zone
quando crei la pipeline. Tuttavia, ti consigliamo di specificare solo la regione e lasciare la zona non specificata. In questo modo, il servizio Dataflow può selezionare automaticamente la zona migliore all'interno della regione in base alla capacità della zona disponibile al momento della richiesta di creazione del job. Per saperne di più, consulta la documentazione relativa alle regioni Dataflow.