Lettura da Bigtable a Dataflow

Per leggere i dati da Bigtable a Dataflow, utilizza il connettore Bigtable I/O di Apache Beam.

Parallelismo

Il parallelismo è controllato dal numero di nodi nel cluster Bigtable. Ogni nodo gestisce uno o più intervalli di chiavi, anche se gli intervalli di chiavi possono essere spostati da un nodo all'altro nell'ambito del bilanciamento del carico. Per ulteriori informazioni, consulta Letture e prestazioni nella documentazione di Bigtable.

Ti viene addebitato il numero di nodi nei cluster della tua istanza. Consulta i prezzi di Bigtable.

Prestazioni

La tabella seguente mostra le metriche delle prestazioni per le operazioni di lettura di Bigtable. I carichi di lavoro sono stati eseguiti su un worker e2-standard2 utilizzando l'SDK Apache Beam 2.48.0 per Java. Non hanno utilizzato Runner v2.

100 M di record | 1 kB | 1 colonna Velocità effettiva (byte) Velocità effettiva (elementi)
Letto 180 Mbps 170.000 elementi al secondo

Queste metriche si basano su semplici pipeline in modalità batch. Hanno lo scopo di confrontare le prestazioni dei connettori I/O e non sono necessariamente rappresentativi di pipeline reali. Le prestazioni della pipeline Dataflow sono complesse e dipendono dal tipo di VM, dai dati elaborati, dalle prestazioni dei sink e delle origini esterne e dal codice utente. Le metriche si basano sull'esecuzione dell'SDK Java e non sono rappresentative delle caratteristiche delle prestazioni degli SDK di altri linguaggi. Per maggiori informazioni, consulta Prestazioni degli IO di Beam.

best practice

  • Per le nuove pipeline, utilizza il connettore BigtableIO, non CloudBigtableIO.

  • Crea profili dell'app separati per ogni tipo di pipeline. I profili dell'app consentono metriche migliori per distinguere il traffico tra le pipeline, sia per il supporto sia per il monitoraggio dell'utilizzo.

  • Monitorare i nodi Bigtable. Se si verificano colli di bottiglia delle prestazioni, controlla se risorse come l'utilizzo della CPU sono vincolate all'interno di Bigtable. Per ulteriori informazioni, consulta Monitoring.

  • In generale, i timeout predefiniti sono ottimizzati per la maggior parte delle pipeline. Se una pipeline di flusso sembra bloccarsi nella lettura da Bigtable, prova a chiamare withAttemptTimeout per modificare il timeout dei tentativi.

  • Valuta la possibilità di abilitare la scalabilità automatica di Bigtable o ridimensiona il cluster Bigtable in modo che venga scalato in base alle dimensioni dei job Dataflow.

  • Valuta la possibilità di impostare maxNumWorkers sul job Dataflow per limitare il carico sul cluster Bigtable.

  • Se viene eseguita un'elaborazione significativa su un elemento Bigtable prima dello shuffling, le chiamate a Bigtable potrebbero scadere. In tal caso, puoi chiamare withMaxBufferElementCount per eseguire il buffer degli elementi. Questo metodo converte l'operazione di lettura da flussi di dati a impaginati, evitando il problema.

  • Se utilizzi un singolo cluster Bigtable per le pipeline in modalità flusso e batch e le prestazioni si riducono sul lato Bigtable, valuta la possibilità di configurare la replica sul cluster. Quindi separa le pipeline in modalità batch e flusso in modo che possano leggere da repliche diverse. Per ulteriori informazioni, consulta la Panoramica della replica.

Passaggi successivi