Utilizzare Streaming Engine per i job di streaming

Streaming Engine di Dataflow trasferisce l'esecuzione delle pipeline dalle VM (macchine virtuali) worker al 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 Persistent Disk 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 presenta i seguenti vantaggi:

  • È stato ridotto l'utilizzo delle risorse di archiviazione su Persistent Disk, della CPU e della memoria sulle VM worker. Streaming Engine funziona al meglio con tipi di macchine di lavoro più piccole (n1-standard-2 anziché n1-standard-4). Non richiede un Persistent Disk oltre a un piccolo disco di avvio del worker, il che comporta un minore 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ù fluida e granulare dei worker.
  • Supportabilità migliorata, perché non è necessario eseguire nuovamente il deployment delle pipeline per applicare gli aggiornamenti del servizio.

La maggior parte della riduzione delle risorse dei worker è dovuta al trasferimento del lavoro al 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 l'SDK Apache Beam versione 2.33.0 o successive.
  • Non puoi aggiornare le pipeline che sono già in esecuzione per utilizzare Streaming Engine. Se la pipeline è in esecuzione in produzione senza Streaming Engine e vuoi utilizzarlo, interrompila utilizzando l'opzione Drain di Dataflow. 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 hanno 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 elevato del sistema e un messaggio nel log del job indica che il limite è stato superato. Come best practice, evita progetti di pipeline che generano chiavi di grandi dimensioni. Per maggiori informazioni, consulta Scrivere pipeline Dataflow tenendo presente la 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 specificata. 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 macchine worker con un numero inferiore di core. Utilizza il 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 successiva 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:

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 specificata. 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 macchine worker con un numero inferiore di core. Utilizza il 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 l'SDK Apache Beam Go versione 2.33.0 o 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 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 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 specificata. 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 macchine worker con un numero inferiore di core. Utilizza il 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.

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 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 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 vengono addebitate la CPU, la memoria e le unità di calcolo di Streaming Engine dei worker.

Utilizzare la fatturazione basata sulle risorse

Per utilizzare la fatturazione basata sulle risorse, quando inizi 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

Vai

--dataflow_service_options=enable_streaming_engine_resource_based_billing

Fatturazione basata sul trattamento dei dati (legacy)

A meno che non attivi 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 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, selezionatelo nell'interfaccia di monitoraggio di Dataflow. Se il job utilizza la fatturazione basata sulle risorse, il riquadro laterale Informazioni sul job include un campo Unità di calcolo Streaming Engine.

Per qualsiasi domanda sulla fatturazione, contatta l'assistenza clienti Google Cloud.