Leggere 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 questi possono spostarsi 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. Vedi Prezzi di Bigtable.

Prestazioni

La tabella seguente mostra le metriche sul rendimento 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 milioni di record | 1 kB | 1 colonna Velocità effettiva (byte) Velocità effettiva (elementi)
Leggi 180 MB/s 170.000 elementi al secondo

Queste metriche si basano su semplici pipeline batch. Sono progettati per confrontare il rendimento tra i connettori I/O e non sono necessariamente rappresentativi delle pipeline reali. Le prestazioni della pipeline Dataflow sono complesse e dipendono dal tipo di VM, dai dati in fase di elaborazione, dalle prestazioni di origini e destinazioni esterne e dal codice utente. Le metriche si basano sull'esecuzione dell'SDK Java e non sono rappresentative delle caratteristiche di prestazioni di altri SDK per lingua. Per ulteriori informazioni, consulta Rendimento 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 app consentono di ottenere metriche migliori per distinguere il traffico tra le pipeline, sia per l'assistenza sia per il monitoraggio dell'utilizzo.

  • Monitora i nodi Bigtable. Se riscontri colli di bottiglia delle prestazioni, controlla se risorse come l'utilizzo della CPU sono limitate all'interno di Bigtable. Per ulteriori informazioni, consulta la sezione Monitoraggio.

  • In generale, i timeout predefiniti sono ben ottimizzati per la maggior parte delle pipeline. Se una pipeline di streaming sembra bloccarsi durante la lettura da Bigtable, prova a chiamare withAttemptTimeout per modificare il timeout del tentativo.

  • Valuta la possibilità di attivare la scalabilità automatica di Bigtable o di ridimensionare il cluster Bigtable 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 di un ordinamento casuale, le chiamate a Bigtable potrebbero scadere. In questo caso, puoi chiamare withMaxBufferElementCount per mettere in buffer gli elementi. Questo metodo converte l'operazione di lettura da streaming a paginata, evitando il problema.

  • Se utilizzi un singolo cluster Bigtable sia per le pipeline batch sia per quelle in streaming e le prestazioni peggiorano lato Bigtable, valuta la possibilità di configurare la replica sul cluster. Quindi separa le pipeline batch e streaming in modo che leggano da repliche diverse. Per ulteriori informazioni, consulta la sezione Panoramica della replica.

Passaggi successivi