Utilizzo di Streaming Engine per i job di elaborazione in modalità flusso

Streaming Engine di Dataflow sposta l'esecuzione della pipeline dalle macchine virtuali (VM) worker al backend del servizio Dataflow. Quando non utilizzi Streaming Engine per i job di flusso, l'esecutore di Dataflow esegue i passaggi della pipeline in modalità flusso 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 in modalità flusso che utilizzano l'SDK Apache Beam Python 2.21.0 o versioni successive e Python 3.
  • Pipeline in modalità flusso 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: modello di esecuzione per l'elaborazione di dati a scalabilità elevata e a bassa latenza.

Vantaggi

Il modello Streaming Engine offre i seguenti vantaggi:

  • Utilizzo delle risorse di archiviazione su Persistent Disk, memoria e CPU ridotto sulle VM worker. Streaming Engine funziona al meglio con tipi di macchine worker più piccoli (n1-standard-2 anziché n1-standard-4). Non richiede un Persistent Disk oltre a un disco di avvio worker di dimensioni ridotte, con un consumo di risorse e quota inferiore.
  • 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.
  • È stata migliorata la supportabilità, perché non è necessario eseguire nuovamente il deployment delle pipeline per applicare gli aggiornamenti del servizio.

La maggior parte della riduzione delle risorse worker deriva dall'offload del lavoro al servizio Dataflow. Per questo motivo, è previsto un addebito associato all'uso di Streaming Engine.

Assistenza 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 2.16.0 o versioni successive.
  • Per l'SDK Go, Streaming Engine richiede l'SDK Apache Beam 2.33.0 o versioni successive.
  • Non puoi aggiornare le pipeline già in esecuzione per utilizzare Streaming Engine. Se la tua pipeline è in esecuzione in produzione senza Streaming Engine e vuoi utilizzare Streaming Engine, arrestala utilizzando l'opzione Svuotamento Dataflow. Quindi, specifica il parametro Stream 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 elementi memorizzati nel buffer sia stato personalizzato. Quando una pipeline supera questo limite, si blocca con un ritardo di sistema elevato, ma non viene visualizzato alcun errore nei file di log esterni. Come best practice, evita di progettare pipeline che comportano chiavi di grandi dimensioni. Per ulteriori informazioni, consulta Scrittura di pipeline Dataflow pensando alla scalabilità.
  • Supporta chiavi di crittografia gestite dal cliente (CMEK)

Usa Streaming Engine

Questa funzionalità è disponibile in tutte le regioni in cui è supportato Dataflow. Per visualizzare le località disponibili, consulta Località Dataflow.

Java

Streaming Engine richiede l'SDK Java Apache Beam 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 2.11.0 o versioni successive.
  • --experiments=enable_streaming_engine se 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 specificata. Se specifichi il parametro --zone e lo imposti su una zona esterna alle regioni disponibili, Dataflow segnala un errore.

Streaming Engine funziona al meglio con tipi di macchina worker principali più piccoli. Usa il tipo di job per determinare se utilizzare un tipo di macchina worker con memoria elevata. I tipi di macchina di esempio che consigliamo di includere 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 i log locali. Questi valori sono i valori predefiniti.

Python

Streaming Engine richiede l'SDK Apache Beam Python 2.16.0 o versioni successive.

Streaming Engine è abilitato per impostazione predefinita per le nuove pipeline di flusso di Dataflow quando vengono soddisfatte le seguenti condizioni:

Nell'SDK Python versione 2.45.0 o successive, non puoi disabilitare Streaming Engine per le pipeline in modalità flusso. Nell'SDK Python versione 2.44.0 o precedenti, per disabilitare Streaming Engine, specifica il seguente parametro:

--experiments=disable_streaming_engine

Se utilizzi Python 2, per abilitare Streaming Engine, specifica il seguente parametro:

--enable_streaming_engine

Se utilizzi Dataflow Streaming Engine nella 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 specificata. Se specifichi il parametro --zone e lo imposti su una zona esterna alle regioni disponibili, Dataflow segnala un errore.

Streaming Engine funziona al meglio con tipi di macchina worker principali più piccoli. Usa il tipo di job per determinare se utilizzare un tipo di macchina worker con memoria elevata. I tipi di macchina di esempio che consigliamo di includere 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 i log locali. Questi valori sono i valori predefiniti.

Go

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 flusso di Dataflow che utilizzano l'SDK Apache Beam Go.

Se vuoi disabilitare Streaming Engine nella pipeline Go streaming, specifica il seguente parametro. Questo parametro deve essere specificato ogni volta che vuoi disabilitare Streaming Engine.

--experiments=disable_streaming_engine

Se utilizzi Dataflow Streaming Engine nella 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 specificata. Se specifichi il parametro --zone e lo imposti su una zona esterna alle regioni disponibili, Dataflow segnala un errore.

Streaming Engine funziona al meglio con tipi di macchina worker principali più piccoli. Usa il tipo di job per determinare se utilizzare un tipo di macchina worker con memoria elevata. I tipi di macchina di esempio che consigliamo di includere 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 i log locali. Questi valori 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 abilitare Streaming Engine utilizza il seguente flag:

--enable-streaming-engine

Per disabilitare 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 abilitare o disabilitare Streaming Engine. Per abilitare Streaming Engine, in environment, imposta il campo experiments su enable_streaming_engine:

"environment": {
          "experiments": "enable_streaming_engine"
      }

Per disabilitare 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 addebitati i costi per le risorse totali utilizzate dal job. Con la fatturazione basata sulle risorse, le risorse di Streaming Engine consumate dal job vengono misurate e misurate in unità di calcolo Streaming Engine. Ti vengono addebitati i costi per CPU worker, memoria worker e unità di calcolo 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 di servizio Dataflow.

Java

--dataflowServiceOptions=enable_streaming_engine_resource_based_billing

Python

--dataflow_service_options=enable_streaming_engine_resource_based_billing

Go

--dataflow_service_options=enable_streaming_engine_resource_based_billing

Fatturazione con elaborazione dei dati (precedente)

A meno che non abiliti la fatturazione basata sulle risorse, i job vengono fatturati utilizzando la fatturazione basata sui dati legacy.

Verificare 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. Se hai job che utilizzano la fatturazione elaborata dai dati, la fattura include lo SKU Streaming Engine data processed. Se hai alcuni job che utilizzano la fatturazione basata sulle risorse e altri job che utilizzano la fatturazione basata sui dati, la fattura include entrambi gli SKU.

Quando utilizzi Dataflow Prime con la fatturazione basata sulle risorse, viene usato lo SKU Data Compute Unit (DCU).

Per capire quale modello di prezzi viene utilizzato dal job, seleziona il job 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.

Se hai domande sulla fatturazione, contatta l'assistenza clienti Google Cloud.