Streaming Engine di Dataflow trasferisce l'esecuzione delle pipeline dalle macchine virtuali (VM) worker al backend del servizio Dataflow. Quando non utilizzi Streaming Engine per i job di streaming, il runner di Dataflow esegue i passaggi della pipeline di streaming interamente sulle VM worker, consumando CPU, memoria e spazio di archiviazione su Persistent Disk dei worker.
Streaming Engine è abilitato per impostazione predefinita per le seguenti pipeline:
- Pipeline di streaming che utilizzano l'SDK Apache Beam Python versione 2.21.0 o successive e Python 3.
- Pipeline di streaming che utilizzano l'SDK Apache Beam Go versione 2.33.0 o successive.
Per scoprire 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:
- Riduzione dell'utilizzo delle risorse di CPU, memoria e spazio di archiviazione su Persistent Disk nelle VM worker. Streaming Engine funziona meglio con i tipi di macchine worker con meno vCPU (ad esempio, 2 vCPU anziché 4 vCPU). Non richiede Persistent Disk oltre a un piccolo disco di avvio del worker, il che comporta un minor consumo di risorse e quote.
- Scalabilità automatica orizzontale più reattiva in risposta alle variazioni del volume di dati in entrata. Streaming Engine offre una scalabilità più granulare dei worker. Puoi anche configurare un livello di latenza per ottimizzare la sensibilità del gestore della scalabilità automatica alla durata del backlog.
- Migliore supportabilità, perché non è necessario rifare il deployment delle pipeline per applicare gli aggiornamenti del servizio.
La maggior parte della riduzione delle risorse dei worker deriva dall'offload del lavoro al servizio Dataflow. Per questo motivo, l'utilizzo di Streaming Engine comporta un addebito.
Supporto e limitazioni
- Per l'SDK Java, Streaming Engine richiede l'SDK Apache Beam versione 2.10.0 o successive.
- Per l'SDK Python, Streaming Engine richiede l'SDK Apache Beam versione 2.16.0 o successive.
- Per l'SDK Go, Streaming Engine richiede l'SDK Apache Beam versione 2.33.0 o 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, interrompila utilizzando l'opzione Svuota di Dataflow. Poi, specifica il parametro Streaming Engine ed esegui nuovamente la pipeline.
- Per i job che utilizzano Streaming Engine, i dati di input aggregati per le finestre aperte hanno un limite di 60 GB per chiave. I dati di input aggregati includono sia gli elementi memorizzati nel buffer sia lo stato personalizzato. Quando una pipeline supera questo limite, si blocca con un ritardo di sistema elevato e nel log del job viene visualizzato un messaggio che indica che il limite è stato superato. Come best practice, evita progettazioni di pipeline che generano chiavi di grandi dimensioni. Per saperne di più, consulta Scrittura di pipeline Dataflow con scalabilità in mente.
- Supporta le chiavi di crittografia gestite dal cliente (CMEK)
Utilizza Streaming Engine
Questa funzionalità è disponibile in tutte le regioni in cui è supportato Dataflow. Per visualizzare le località disponibili, consulta 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 di streaming, specifica il seguente parametro:
--enableStreamingEnginese utilizzi l'SDK Apache Beam per Java versione 2.11.0 o successive.--experiments=enable_streaming_enginese utilizzi l'SDK Apache Beam per Java versione 2.10.0.
Se utilizzi Dataflow Streaming Engine 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 che hai 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 meglio con tipi di macchine worker con meno vCPU.
Utilizza il tipo di prestazione per determinare se utilizzare un tipo di macchina worker con memoria elevata. I tipi di macchine consigliati includono tipi di macchine con 2 vCPU,
come --workerMachineType=n4-standard-2 o --workerMachineType=n4-highmem-2.
Puoi anche impostare --diskSizeGb=30 perché Streaming Engine ha bisogno di spazio solo per l'immagine di avvio del worker e i log locali. Questi sono i valori predefiniti.
Python
Streaming Engine richiede l'SDK Apache Beam Python versione 2.16.0 o successive.
Streaming Engine è abilitato per impostazione predefinita per le nuove pipeline di streaming Dataflow quando vengono soddisfatte le seguenti condizioni:
- Le pipeline utilizzano l'SDK Apache Beam per Python versione 2.21.0 o successive e Python 3.
- Le chiavi di crittografia gestite dal cliente non vengono utilizzate.
- I worker Dataflow si trovano nella stessa regione del job Dataflow.
In Python SDK versione 2.45.0 o successive, non puoi disattivare Streaming Engine per le pipeline di streaming. In Python SDK versione 2.44.0 o precedenti, 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 Dataflow Streaming Engine 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 che hai 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 meglio con tipi di macchine worker con meno vCPU.
Utilizza il tipo di prestazione per determinare se utilizzare un tipo di macchina worker con memoria elevata. I tipi di macchine consigliati includono tipi di macchine con 2 vCPU,
come --workerMachineType=n4-standard-2 o --workerMachineType=n4-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 i log locali. Questi sono i valori predefiniti.
Vai
Streaming Engine richiede l'SDK Apache Beam Go versione 2.33.0 o successive.
Streaming Engine è abilitato per impostazione predefinita per le nuove pipeline di streaming Dataflow che utilizzano l'SDK Apache Beam Go.
Se vuoi disattivare Streaming Engine nella pipeline di streaming Go, specifica il seguente parametro. Questo parametro deve essere specificato ogni volta che vuoi disattivare Streaming Engine.
--experiments=disable_streaming_engine
Se utilizzi Dataflow Streaming Engine 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 che hai 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 meglio con tipi di macchine worker con meno vCPU.
Utilizza il tipo di prestazione per determinare se utilizzare un tipo di macchina worker con memoria elevata. I tipi di macchine consigliati includono tipi di macchine con 2 vCPU,
come --workerMachineType=n4-standard-2 o --workerMachineType=n4-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 i log locali. Questi sono i valori predefiniti.
gcloud CLI
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 disattivare il motore di streaming, utilizza il seguente flag:
--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 abilitare 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 utilizzate dal tuo job. Con la fatturazione basata sulle risorse, le risorse di Streaming Engine utilizzate dal job vengono misurate e conteggiate in unità di calcolo di Streaming Engine. Ti vengono addebitati i costi per la CPU del worker, la memoria del worker e le unità di calcolo di Streaming Engine.
Utilizza la fatturazione basata sulle risorse
Per utilizzare la fatturazione basata sulle risorse, quando avvii o aggiorni il job, includi la seguente opzione del 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 per dati elaborati (legacy)
A meno che non attivi la fatturazione basata sulle risorse, i job vengono fatturati utilizzando la fatturazione per l'elaborazione dei dati legacy.
Verifica il modello di fatturazione
A meno che tu non utilizzi Dataflow Prime, quando 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 per dati elaborati, la fattura include lo SKU Streaming Engine data processed.
Se alcuni job utilizzano la fatturazione basata sulle risorse e altri la fatturazione basata sui dati elaborati, la fattura include entrambi gli SKU.
Quando utilizzi Dataflow Prime con la fatturazione basata sulle risorse, viene utilizzato lo SKU Data Compute Unit (DCU).
Per vedere quale modello di prezzi utilizza il tuo job, selezionalo nell'interfaccia di monitoraggio di Dataflow. Se il job utilizza la fatturazione basata sulle risorse, il riquadro laterale Informazioni job include un campo Unità di calcolo Streaming Engine.
In caso di domande sulla fatturazione, contatta l'assistenza clienti Google Cloud.