Usa Streaming Engine per i job di flussi di dati

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 di flussi, il runner Dataflow esegue i passaggi una pipeline di flusso interamente su VM worker, che consuma CPU worker, memoria e archiviazione su Persistent Disk.

Streaming Engine è abilitato per impostazione predefinita per le seguenti pipeline:

  • Pipeline di flussi di dati che utilizzano l'SDK Apache Beam per Python versione 2.21.0 o successive 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: modello di esecuzione per l'elaborazione dei dati a elevata scalabilità e a bassa latenza.

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. Offerte di Streaming Engine una scalabilità dei worker in modo più fluido e granulare.
  • 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, esiste un charge associato all'uso di Streaming Engine.

Supporto e limitazioni

  • Per l'SDK Java, Streaming Engine richiede Apache Beam SDK versione 2.10.0 o in un secondo momento.
  • Per l'SDK Python, Streaming Engine richiede la versione dell'SDK Apache Beam 2.16.0 o versioni successive.
  • 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 utilizzarlo, interrompila utilizzando l'opzione Svuotamento di Dataflow. Quindi, specifica il parametro Streaming Engine ed eseguire nuovamente 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 comprendono elementi con buffer e 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 comportano chiavi di grandi dimensioni. Per ulteriori informazioni, vedi Scrittura di pipeline Dataflow in funzione della scalabilità.
  • Supporta le 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à di Dataflow.

Java

Streaming Engine richiede l'SDK Java Apache Beam versione 2.10.0 o in un secondo momento.

Per utilizzare Streaming Engine per le pipeline in modalità flusso, specifica quanto segue :

  • --enableStreamingEngine se utilizzi l'SDK Apache Beam per Java 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. Tipi di macchina di esempio che consigliamo includono --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 dell'SDK Python di Apache Beam 2.16.0 o versioni successive.

Streaming Engine è abilitato per impostazione predefinita per i nuovi flussi di dati Dataflow delle pipeline quando si verificano le seguenti condizioni:

  • Le pipeline utilizzano l'SDK per Python Apache Beam versione 2.21.0 o versioni successive e Python 3.
  • Chiavi di crittografia gestite dal cliente non vengono utilizzati.
  • I worker Dataflow si trovano nello stesso region come tuo del job Dataflow.

Nell'SDK Python versione 2.45.0 o successiva, 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 parametro seguente:

--experiments=disable_streaming_engine

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

--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 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 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. Tipi di macchina di esempio che consigliamo includono --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 i nuovi flussi di dati 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 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 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. Tipi di macchina di esempio 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 worker e logaritmi. Questi sono i valori predefiniti.

Interfaccia a riga di comando gcloud

Quando esegui la pipeline utilizzando 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 Streaming Engine, utilizza il flag seguente:

--additional-experiments=disable_streaming_engine

REST

Quando esegui la pipeline utilizzando projects.locations.jobs.create nell'API REST, utilizza il metodo Job risorsa da abilitare o disabilitare Streaming Engine. Per abilitare Streaming Engine, sotto environment, imposta il campo experiments su enable_streaming_engine:

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

Per disabilitare Streaming Engine, sotto 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 job. Con la fatturazione basata sulle risorse, le risorse di consumati dal job vengono misurati e misurati in Unità di calcolo di Streaming Engine. Ti viene addebitato il costo della CPU, della memoria e delle unità di calcolo di Streaming Engine dei worker.

Utilizza 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 con elaborazione dei dati (precedente)

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 non utilizzi Dataflow Prime, quando hai job che usano la fatturazione basata sulle risorse, 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 sul job include un campo Unità di calcolo Streaming Engine.

Se hai domande sulla fatturazione, contatta Assistenza clienti Google Cloud.