Utilizzare Streaming Engine per i job di streaming

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 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 per 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 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:

  • Riduzione dell'utilizzo delle risorse di CPU, memoria e spazio di archiviazione su Persistent Disk nelle VM worker. Streaming Engine funziona al meglio con tipi di macchine worker più piccoli (n1-standard-2 anziché n1-standard-4). Non richiede Persistent Disk oltre a un piccolo disco di avvio worker, il che comporta un minore consumo di risorse e quota.
  • 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 supporto, perché non è necessario eseguire nuovamente il deployment delle pipeline per applicare gli aggiornamenti del servizio.

La maggior parte della riduzione delle risorse dei worker deriva dal 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 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, arresta la pipeline utilizzando l'opzione Svuotamento di Dataflow. Poi 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 bufferizzati sia lo stato personalizzato. Quando una pipeline supera questo limite, si blocca con un ritardo elevato del sistema e un messaggio nel log dei job indica che il limite è stato superato. Come best practice, evita le progettazioni di pipeline che generano chiavi di grandi dimensioni. Per maggiori informazioni, consulta Scrivere pipeline Dataflow pensando alla 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 per 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 versione 2.11.0 o successive.
  • --experiments=enable_streaming_engine se utilizzi l'SDK Apache Beam per Java versione 2.10.0.

Se utilizzi Dataflow Streaming Engine per la 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 i tipi di macchine worker core più piccoli. Utilizza il tipo di job per determinare se utilizzare un tipo di macchina worker con memoria elevata. Esempi di tipi di macchine che consigliamo includono --workerMachineType=n1-standard-2 e --workerMachineType=n1-highmem-2. Puoi anche impostare --diskSizeGb=30 perché Streaming Engine ha bisogno solo di spazio per l'immagine di avvio del worker e per i log locali. Questi valori sono i valori predefiniti.

Python

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

Streaming Engine è attivato per impostazione predefinita per le nuove pipeline di Dataflow in modalità flusso quando vengono soddisfatte le seguenti condizioni:

Nella versione 2.45.0 o successive dell'SDK Python, non puoi disattivare Streaming Engine per le pipeline di streaming. Nella versione 2.44.0 o precedenti dell'SDK Python, per disattivare Streaming Engine, specifica il seguente parametro:

--experiments=disable_streaming_engine

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

--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 i tipi di macchine worker core più piccoli. Utilizza il tipo di job per determinare se utilizzare un tipo di macchina worker con memoria elevata. Esempi di tipi di macchine che consigliamo includono --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 del worker e per i log locali. Questi valori sono i valori predefiniti.

Vai

Streaming Engine richiede l'SDK Apache Beam per 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 i tipi di macchine worker core più piccoli. Utilizza il tipo di job per determinare se utilizzare un tipo di macchina worker con memoria elevata. Esempi di tipi di macchine che consigliamo includono --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 del worker e per 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 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 viene addebitato il costo delle risorse totali utilizzate dal job. Con la fatturazione basata sulle risorse, le risorse di Streaming Engine utilizzate dal job vengono misurate e conteggiate in unità di calcolo Streaming Engine. Ti vengono addebitati i costi per la CPU del worker, la memoria del worker e le unità di calcolo di Streaming Engine.

Utilizzare 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 basata sul trattamento dei dati (legacy)

A meno che tu non attivi la fatturazione basata sulle risorse, i tuoi job vengono fatturati utilizzando la fatturazione basata sui dati elaborati precedente.

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 basata sui dati elaborati, 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 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 Dataflow. Se il job utilizza la fatturazione basata sulle risorse, il riquadro laterale Informazioni sul job include un campo Unità di calcolo di Streaming Engine.

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