Utilizzare gli snapshot di Dataflow

Gli snapshot Dataflow salvano lo stato di una pipeline in modalità flusso, avvii una nuova versione del tuo job Dataflow senza perdere lo stato. Gli snapshot sono utili per backup e ripristino, test e rollback degli aggiornamenti alle pipeline in modalità flusso e altri scenari simili.

Puoi creare uno snapshot di Dataflow di qualsiasi job di inserimento flussi in esecuzione. Tieni presente che ogni nuovo job creato da uno snapshot utilizza Motore di flussi di dati. Puoi anche utilizzare uno snapshot di Dataflow per eseguire la migrazione della pipeline esistente a Streaming Engine, più efficiente e scalabile, con un tempo di riposo minimo.

Questa guida spiega come creare e gestire snapshot e job dagli snapshot.

Prima di iniziare

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Dataflow, Compute Engine, Cloud Logging, Cloud Storage, Google Cloud Storage JSON, BigQuery, Cloud Pub/Sub, Cloud Datastore, and Cloud Resource Manager APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Dataflow, Compute Engine, Cloud Logging, Cloud Storage, Google Cloud Storage JSON, BigQuery, Cloud Pub/Sub, Cloud Datastore, and Cloud Resource Manager APIs.

    Enable the APIs

Crea uno snapshot

Console

  1. Nella console Google Cloud, vai alla pagina Job di Dataflow.

    Vai a Job

    Viene visualizzato un elenco di job Dataflow insieme al relativo stato. Se non vedi job di flussi di dati, devi eseguire un nuovo flusso di dati lavoro. Per un esempio di job di inserimento di flussi, consulta la guida rapida all'utilizzo dei modelli.

  2. Seleziona un job.
  3. Nella barra dei menu della pagina Dettagli job, fai clic su Crea snapshot.
  4. Nella finestra di dialogo Crea uno snapshot, seleziona una delle seguenti opzioni opzioni:
    • Senza origini dati: seleziona questa opzione per creare solo uno snapshot dello stato del job Dataflow.
    • Con origini dati: seleziona questa opzione per creare uno snapshot. dello stato del job Dataflow insieme a uno snapshot dell'origine Pub/Sub.
  5. Fai clic su Crea.

gcloud

Crea uno snapshot:

gcloud dataflow snapshots create \
    --job-id=JOB_ID \
    --snapshot-ttl=DURATION \
    --snapshot-sources=true \
    --region=REGION

Sostituisci quanto segue:

  • JOB_ID: ID job di flussi di dati
  • DURATION: la quantità di tempo (in giorni) Prima della scadenza dello snapshot, dopodiché non sarà più possibile creare altri job dall'istantanea. Il flag snapshot-ttl è facoltativo, quindi se non viene specificato, lo snapshot scade dopo 7 giorni. Specifica nel seguente formato: 5d. La durata massima che puoi specificare è di 30 giorni (30d).
  • REGION: la regione in cui si trova il job di flussi di dati è in esecuzione

Il flag snapshot-sources specifica se acquisire lo snapshot delle origini Pub/Sub insieme allo snapshot di Dataflow. Se true, le origini Pub/Sub sono snapshot automatici e gli ID snapshot Pub/Sub vengono mostrato nella risposta di output. Dopo aver eseguito il comando create controlla lo stato dello snapshot eseguendo il comando list o il comando describe.

Quando crei snapshot di Dataflow, si applicano le seguenti regole:

  • Gli snapshot Dataflow comportano un addebito di utilizzo del disco.
  • Gli snapshot vengono creati nella stessa regione del job.
  • Se la posizione del worker del job è diversa dalla regione del job, la creazione non riesce. Consulta le Regioni di Dataflow guida.
  • Puoi creare snapshot di job non Streaming Engine solo se i job sono iniziate o aggiornate dopo il 1° febbraio 2021.
  • Snapshot Pub/Sub creati con snapshot Dataflow sono gestite dal servizio Pub/Sub prevede un addebito.
  • Uno snapshot Pub/Sub scade non oltre 7 giorni dalla sua creazione. La durata esatta viene determinata al momento della creazione dal backlog esistente nell'abbonamento di origine. Nello specifico, la durata dello snapshot Pub/Sub è 7 days - (age of oldest unacked message in the subscription). Ad esempio, prendi in considerazione una sottoscrizione messaggio non confermato risale a 3 giorni prima. Se uno snapshot Pub/Sub creato da questa sottoscrizione, lo snapshot, che acquisisce sempre Un backlog di 3 giorni, purché esista lo snapshot, scade dopo 4 giorni. Consulta: Riferimento per gli snapshot Pub/Sub.
  • Durante l'operazione di snapshot, il job Dataflow viene messo in pausa riprende quando lo snapshot è pronto. Il tempo necessario dipende dalle dimensioni dello stato della pipeline. Ad esempio, il tempo necessario per acquisire snapshot nei job di Streaming Engine è in genere inferiore a quello dei job non Streaming Engine.
  • Puoi annullare il job mentre è in corso uno snapshot, che poi viene annullato.
  • Non puoi aggiornare o svuotare il job mentre è in corso un scatto. Devi attendere che il job venga ripreso dal processo di acquisizione di istantanee prima di poterlo aggiornare o svuotare.

Utilizzare la pagina degli snapshot

Dopo aver creato uno snapshot, puoi utilizzare la pagina Snapshot nella Console Google Cloud per visualizzare e gestire gli snapshot del progetto.

Se fai clic su un'istantanea, viene aperta la pagina Dettagli snapshot. Puoi visualizzare metadati aggiuntivi sullo snapshot, nonché un link al job di origine e e qualsiasi snapshot Pub/Sub.

Pagina dei dettagli degli snapshot di Dataflow in cui puoi trovare ulteriori informazioni su uno snapshot.

Elimina uno snapshot

L'eliminazione di uno snapshot è un modo per arrestarlo e riprendere lavoro. Inoltre, l'eliminazione degli snapshot di Dataflow non comporta l'eliminazione automatica degli snapshot Pub/Sub associati.

Console

  1. Nella console Google Cloud, vai a Dataflow Pagina Snapshot.

    Vai a Snapshot

  2. Seleziona lo snapshot e fai clic su Elimina.
  3. Nella finestra di dialogo Elimina snapshot, fai clic su Elimina per confermare.

gcloud

Per eliminare uno snapshot:

gcloud dataflow snapshots delete SNAPSHOT_ID \
    --region=REGION

Sostituisci quanto segue:

  • SNAPSHOT_ID: l'ID snapshot
  • REGION: la regione in cui esiste lo snapshot

Per ulteriori informazioni, consulta delete come riferimento.

Crea un job da uno snapshot

Dopo aver creato uno snapshot, puoi ripristinare creando un nuovo job da quello snapshot.

Java

Per creare un nuovo job da uno snapshot, utilizza entrambi i flag --createFromSnapshot e --enableStreamingEngine.

  • Nella shell o nel terminale, crea un nuovo job da uno snapshot. Ad esempio:
    mvn -Pdataflow-runner compile exec:java \
        -Dexec.mainClass=MAIN_CLASS \
        -Dexec.args="--project=PROJECT_ID \
        --stagingLocation=gs://STORAGE_BUCKET/staging/ \
        --inputFile=gs://apache-beam-samples/shakespeare/* \
        --output=gs://STORAGE_BUCKET/output \
        --runner=DataflowRunner \
        --enableStreamingEngine \
        --createFromSnapshot=SNAPSHOT_ID \
        --region=REGION"

    Sostituisci quanto segue:

    • MAIN_CLASS o MODULE: per le pipeline Java, la posizione della classe principale che contiene il codice della pipeline. Per le pipeline Python, la posizione del modulo contenente il codice della pipeline. Ad esempio, quando utilizzi l'esempio Conteggio parole, il valore è org.apache.beam.examples.WordCount.
    • PROJECT_ID: l'ID del tuo progetto Google Cloud
    • STORAGE_BUCKET: il bucket Cloud Storage che utilizzi per gli asset temporanei del job e l'output finale
    • SNAPSHOT_ID: l'ID dello snapshot da cui vuoi creare un nuovo job
    • REGION: la località in cui vuoi correre il nuovo job Dataflow

Python

Gli snapshot Dataflow richiedono l'SDK Apache Beam per Python, versione 2.29.0 o successive.

Per creare un nuovo job da uno snapshot, utilizza sia il comando --createFromSnapshot e --enableStreamingEngine e i flag facoltativi.

  • Nella shell o nel terminale, crea un nuovo job da uno snapshot. Per esempio:
    python -m MODULE \
        --project PROJECT_ID \
        --temp_location gs://STORAGE_BUCKET/tmp/ \
        --input gs://apache-beam-samples/shakespeare/* \
        --output gs://STORAGE_BUCKET/output \
        --runner DataflowRunner \
        --enable_streaming_engine \
        --create_from_snapshot=SNAPSHOT_ID \
        --region REGION \
        --streaming

    Sostituisci quanto segue:

    • MAIN_CLASS o MODULE: per le pipeline Java, la posizione della classe principale che contiene il codice della pipeline. Per le pipeline Python, la posizione del modulo contenente il codice della pipeline. Ad esempio, quando utilizzi l'esempio Conteggio parole, il valore è org.apache.beam.examples.WordCount.
    • PROJECT_ID: l'ID del tuo progetto Google Cloud
    • STORAGE_BUCKET: il bucket Cloud Storage che utilizzi per gli asset temporanei del job e l'output finale
    • SNAPSHOT_ID: l'ID dello snapshot da cui vuoi creare un nuovo job
    • REGION: la posizione in cui vuoi eseguire il nuovo job Dataflow

Quando crei job dagli snapshot Dataflow, si applicano le seguenti regole:

  • I job creati dagli snapshot devono essere eseguiti nella stessa regione in cui è archiviato lo snapshot.
  • Se uno snapshot di Dataflow include snapshot di Origini Pub/Sub, job creati da un Dataflow creare snapshot automaticamente seek a questi Snapshot Pub/Sub come origini. Devi specificare lo stesso Argomenti Pub/Sub utilizzati dal job di origine durante la creazione di job da quel job Snapshot Dataflow.

  • Se uno snapshot di Dataflow non include snapshot di Le origini Pub/Sub e il job di origine utilizzano un codice Pub/Sub devi specificare un argomento Pub/Sub durante la creazione di job lo snapshot Dataflow.

  • I nuovi job creati da uno snapshot sono comunque soggetti a un controllo della compatibilità degli aggiornamenti.

Limitazioni note

Agli snapshot Dataflow si applicano le seguenti limitazioni:

  • Non puoi creare job dagli snapshot utilizzando i modelli o l'editor Dataflow SQL.
  • Il periodo di scadenza degli snapshot può essere impostato solo tramite Google Cloud CLI.
  • Gli snapshot Dataflow supportano solo l'origine Pub/Sub snapshot.
  • Gli snapshot del sink non sono supportati. Ad esempio, non puoi creare un Snapshot BigQuery durante la creazione di un Dataflow senza dover creare uno snapshot.

Risoluzione dei problemi

Questa sezione fornisce istruzioni per la risoluzione dei problemi più comuni a interagire con gli snapshot di Dataflow.

Prima di contattare l'assistenza, assicurati di aver escluso problemi relativi alle limitazioni note e nelle sezioni di risoluzione dei problemi che seguono.

Richiesta di creazione di snapshot rifiutata

Dopo aver inviato una richiesta di creazione di snapshot, dal Console Google Cloud o gcloud CLI, Dataflow il servizio esegue un controllo delle condizioni preliminari e restituisce eventuali messaggi di errore. La richiesta di creazione di istantanee può essere rifiutata per vari motivi specificati nei messaggi di errore, ad esempio se un tipo di job non è supportato o una regione non è disponibile.

Se la richiesta viene rifiutata perché il job è troppo vecchio, devi aggiornarlo prima di richiedere un'istantanea.

Creazione dello snapshot non riuscita

La creazione dello snapshot potrebbe non riuscire per diversi motivi. Ad esempio, il job di origine è stato annullato o il progetto non dispone delle autorizzazioni corrette per la creazione snapshot Pub/Sub. I log di job-message del job contiene i messaggi di errore della creazione dello snapshot. Se la creazione dello snapshot non va a buon fine, il job di origine viene ripreso.

Creazione di un job dallo snapshot non riuscita

Quando crei un job da uno snapshot, assicurati che lo snapshot esista e non sia scaduto. Il nuovo job deve essere eseguito su Streaming Engine.

Per i problemi comuni di creazione dei job, consulta la guida alla risoluzione dei problemi di Dataflow. Nella In particolare, i nuovi job creati dagli snapshot sono soggetti a controllo compatibilità aggiornamenti in cui il nuovo job deve essere compatibile con il job di origine creato con snapshot.

Il job creato dallo snapshot fa pochi progressi

I log job-message del job contengono messaggi di errore per la creazione del job. Ad esempio, potresti notare che che il job non riesce a trovare gli snapshot Pub/Sub. In questo caso, verifica che gli snapshot Pub/Sub esistano e non siano scaduti. Gli snapshot Pub/Sub scadono non appena il messaggio meno recente in un sia precedente a sette giorni prima. Gli snapshot Pub/Sub scaduti potrebbero essere rimossi automaticamente dal servizio Pub/Sub.

Per i job creati da snapshot di Dataflow che includono gli snapshot delle origini Pub/Sub, il nuovo job potrebbe avere backlog di Pub/Sub di grandi dimensioni da elaborare. Scalabilità automatica dei flussi di dati potrebbe aiutare il nuovo job a cancellare più velocemente il backlog.

Il job di origine con snapshot potrebbe essere già in uno stato non integro prima che è stata acquisita snapshot. Capire perché il job di origine non è in stato normale potrebbe aiutarti a risolvere i problemi del nuovo job. Per suggerimenti comuni per il debug dei job, consulta Dataflow: guida alla risoluzione dei problemi.