Streaming Engine di Dataflow sposta l'esecuzione della pipeline dalle macchine virtuali (VM) worker Backend del servizio Dataflow. Quando non utilizzi Streaming Engine per i job in streaming, il programma di esecuzione Dataflow esegue i passaggi della pipeline in streaming interamente sulle VM worker, consumando CPU, memoria e spazio di archiviazione su disco permanente dei worker.
Streaming Engine è abilitato per impostazione predefinita per le seguenti pipeline:
- Pipeline di streaming che utilizzano la versione 2.21.0 o successive dell'SDK Apache Beam per Python e Python 3.
- Pipeline in streaming che utilizzano la versione 2.33.0 o successive dell'SDK Apache Beam per Go.
Per saperne di più sull'implementazione di Streaming Engine, consulta Streaming Engine: Execution Model for Highly-Scalable, Low-Latency Data Processing.
Vantaggi
Il modello Streaming Engine offre i seguenti vantaggi:
- Utilizzo ridotto di risorse di CPU, memoria e spazio di archiviazione su Persistent Disk
sulle VM worker. Streaming Engine funziona al meglio con una macchina worker più piccola
tipi (
n1-standard-2
anzichén1-standard-4
). Non richiede Persistent Disk al di là di un piccolo disco di avvio worker, con conseguente riduzione delle risorse e il consumo delle quote. - Scalabilità automatica orizzontale più reattiva in risposta alle variazioni del volume di dati in entrata. Streaming Engine offre una scalabilità più fluida e granulare dei worker.
- Migliore supportabilità, perché non è necessario eseguire nuovamente il deployment delle pipeline e applicare gli aggiornamenti del servizio.
La maggior parte della riduzione delle risorse worker deriva dal trasferimento del lavoro al dal servizio Dataflow. Per questo motivo, è previsto un addebito associato all'utilizzo di Streaming Engine.
Supporto e limitazioni
- Per l'SDK Java, Streaming Engine richiede l'SDK Apache Beam versione 2.10.0 o successiva.
- Per l'SDK Python, Streaming Engine richiede la versione 2.16.0 o successive dell'SDK Apache Beam.
- Per l'SDK Go, Streaming Engine richiede la versione dell'SDK Apache Beam 2.33.0 o versioni successive.
- Non puoi aggiornare le pipeline già in esecuzione per utilizzare Streaming Engine. Se la pipeline è in esecuzione in produzione senza Streaming Engine e vuoi utilizzare Streaming Engine, arresta la pipeline utilizzando Dataflow Opzione Svuota. Quindi, specifica il parametro Streaming Engine ed esegui di nuovo la pipeline.
- Per i job che utilizzano Streaming Engine, i dati di input aggregati per le finestre aperte ha un limite di 60 GB per chiave. I dati di input aggregati includono sia gli elementi memorizzati nella cache sia lo stato personalizzato. Quando una pipeline supera questo limite, si blocca con un ritardo di sistema elevato e un messaggio nel log del job indica che il limite è stato superato. Come best practice, evita progetti di pipeline che comportano chiavi di grandi dimensioni. Per maggiori informazioni, consulta Scrivere pipeline Dataflow tenendo conto della scalabilità.
- Supporta le chiavi di crittografia gestite dal cliente (CMEK)
Utilizzare Streaming Engine
Questa funzionalità è disponibile in tutte le regioni in cui è supportato Dataflow. Per conoscere le località disponibili, consulta le località di Dataflow.
Java
Streaming Engine richiede l'SDK Apache Beam Java versione 2.10.0 o successive.
Per utilizzare Streaming Engine per le pipeline in modalità flusso, specifica il seguente parametro:
--enableStreamingEngine
se utilizzi l'SDK Apache Beam per Java nelle versioni 2.11.0 o successive.--experiments=enable_streaming_engine
se utilizzi l'SDK Apache Beam per Java versione 2.10.0.
Se utilizzi Streaming Engine di Dataflow per la tua pipeline, non
specificare il parametro --zone
. Specifica invece il parametro --region
e
imposta il valore su una regione supportata.
Dataflow seleziona automaticamente la zona nella regione in cui
specificato. Se specifichi il parametro --zone
e lo imposti su una zona al di fuori delle regioni disponibili, Dataflow segnala un errore.
Streaming Engine funziona al meglio con tipi di macchina worker con core più piccoli. Utilizza la
un tipo di job per determinare se utilizzare un tipo di macchina worker con memoria elevata.
Alcuni tipi di macchine consigliati sono --workerMachineType=n1-standard-2
e --workerMachineType=n1-highmem-2
. Puoi anche impostare --diskSizeGb=30
perché Streaming Engine ha bisogno di spazio solo per l'immagine di avvio del worker e per i log locali. Questi sono i valori predefiniti.
Python
Streaming Engine richiede la versione 2.16.0 o successive dell'SDK Apache Beam per Python.
Streaming Engine è attivato per impostazione predefinita per le nuove pipeline in modalità flusso di Dataflow quando sono soddisfatte le seguenti condizioni:
- Le pipeline utilizzano l'SDK Apache Beam per Python versione 2.21.0 o successiva e Python 3.
- Le chiavi di crittografia gestite dal cliente non vengono utilizzate.
- I worker Dataflow si trovano nella stessa regione del job Dataflow.
Nell'SDK Python 2.45.0 o versioni successive, non puoi disattivare Streaming Engine per le pipeline di flusso. Nell'SDK Python versione 2.44.0 o precedente, per disattivare Streaming Engine, specifica il seguente parametro:
--experiments=disable_streaming_engine
Se utilizzi Python 2, per attivare Streaming Engine, specifica il seguente parametro:
--enable_streaming_engine
Se utilizzi Streaming Engine di Dataflow nella pipeline, non
specificare il parametro --zone
. Specifica invece il parametro --region
e imposta il valore su una regione supportata.
Dataflow seleziona automaticamente la zona nella regione in cui
specificato. Se specifichi il parametro --zone
e lo imposti su una zona
al di fuori delle regioni disponibili, Dataflow segnala un errore.
Streaming Engine funziona al meglio con tipi di macchina worker con core più piccoli. Utilizza la
un tipo di job per determinare se utilizzare un tipo di macchina worker con memoria elevata.
Alcuni tipi di macchine consigliati sono --workerMachineType=n1-standard-2
e --workerMachineType=n1-highmem-2
. Puoi anche impostare --disk_size_gb=30
perché Streaming Engine ha bisogno di spazio solo per l'immagine di avvio del worker e per i log locali. Questi sono i valori predefiniti.
Vai
Streaming Engine richiede la versione dell'SDK Apache Beam Go 2.33.0 o versioni successive.
Streaming Engine è abilitato per impostazione predefinita per le nuove pipeline in modalità flusso di Dataflow che utilizzano l'SDK Apache Beam Go.
Se vuoi disabilitare Streaming Engine nella pipeline di flusso Go, specificare il seguente parametro. Questo parametro deve essere specificato ogni volta che vuoi disattivare Streaming Engine.
--experiments=disable_streaming_engine
Se nella pipeline utilizzi Streaming Engine di Dataflow, non
specificare il parametro --zone
. Specifica invece il parametro --region
e imposta il valore su una regione supportata.
Dataflow seleziona automaticamente la zona nella regione in cui
specificato. Se specifichi il parametro --zone
e lo imposti su una zona
al di fuori delle regioni disponibili, Dataflow segnala un errore.
Streaming Engine funziona al meglio con tipi di macchina worker con core più piccoli. Utilizza la
un tipo di job per determinare se utilizzare un tipo di macchina worker con memoria elevata.
Alcuni tipi di macchine consigliati sono --workerMachineType=n1-standard-2
e --workerMachineType=n1-highmem-2
. Puoi anche impostare --disk_size_gb=30
perché Streaming Engine ha bisogno solo di spazio per l'immagine di avvio worker e
logaritmi. Questi sono i valori predefiniti.
Interfaccia a riga di comando gcloud
Quando esegui la pipeline utilizzando il comando
gcloud dataflow jobs run
o il comando
gcloud dataflow flex-template run
, per attivare Streaming Engine, utilizza il seguente flag:
--enable-streaming-engine
Per disabilitare Streaming Engine, utilizza il flag seguente:
--additional-experiments=disable_streaming_engine
REST
Quando esegui la pipeline utilizzando il metodo
projects.locations.jobs.create
nell'API REST, utilizza la
risorsa Job
per attivare
o disattivare Streaming Engine. Per attivare Streaming Engine,
in environment
, imposta il campo experiments
su enable_streaming_engine
:
"environment": {
"experiments": "enable_streaming_engine"
}
Per disattivare Streaming Engine,
in environment
, imposta il campo experiments
su disable_streaming_engine
:
"environment": {
"experiments": "disable_streaming_engine"
}
Prezzi
Dataflow Streaming Engine offre un modello di fatturazione basato sulle risorse in cui ti vengono addebitate le risorse totali consumate dal job. Con la fatturazione basata sulle risorse, le risorse di Streaming Engine consumate dal tuo job vengono misurate in unità di calcolo Streaming Engine. Ti viene addebitato il costo della CPU, della memoria e delle unità di calcolo di Streaming Engine dei worker.
Utilizzare la fatturazione basata sulle risorse
Per utilizzare la fatturazione basata sulle risorse, per avviare o aggiornare il job, includi quanto segue Opzione di servizio Dataflow.
Java
--dataflowServiceOptions=enable_streaming_engine_resource_based_billing
Python
--dataflow_service_options=enable_streaming_engine_resource_based_billing
Vai
--dataflow_service_options=enable_streaming_engine_resource_based_billing
Fatturazione basata sul trattamento dei dati (legacy)
A meno che non abiliti la fatturazione basata sulle risorse, la fatturazione dei job viene eseguita utilizzando la fatturazione basata sul trattamento dei dati precedente.
Verifica il modello di fatturazione
A meno che tu non utilizzi Dataflow Prime, se hai job che utilizzano la fatturazione basata sulle risorse, la fattura include lo SKU Streaming Engine Compute Unit
. Quando hai job che utilizzano la fatturazione basata sui dati, la fattura include lo SKU Streaming Engine data processed
.
Se ci sono dei job che usano la fatturazione basata sulle risorse
altri job che usano la fatturazione
trattata con dati,
la fattura include entrambi gli SKU.
Quando utilizzi Dataflow Prime con la fatturazione basata sulle risorse, Viene utilizzato lo SKU DCU (Data Compute Unit).
Per vedere quale modello di prezzo viene utilizzato dal tuo job, nel Interfaccia di monitoraggio di Dataflow, seleziona il job. Se il job utilizza la fatturazione basata sulle risorse, Il riquadro laterale Informazioni job include un campo Unità di calcolo Streaming Engine.
Per qualsiasi domanda sulla fatturazione, contatta l'assistenza clienti Google Cloud.