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 gli intervalli di chiavi possono spostarsi tra i nodi nell'ambito del bilanciamento del carico. Per saperne di più, consulta Letture e prestazioni nella documentazione di Bigtable.

Ti viene addebitato un costo per il numero di nodi nei cluster dell'istanza. Consulta i prezzi di Bigtable.

Prestazioni

La tabella seguente mostra le metriche di 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 il runner portatile.

100 M record | 1 kB | 1 colonna Velocità effettiva (byte) Velocità effettiva (elementi)
Lettura 180 MBps 170.000 elementi al secondo

Queste metriche si basano su semplici pipeline batch. Sono progettate per confrontare le prestazioni tra i connettori I/O e non sono necessariamente rappresentative delle pipeline reali. Il rendimento delle pipeline Dataflow è complesso e dipende dal tipo di VM, dai dati elaborati, dal rendimento delle origini e dei sink esterni e dal codice utente. Le metriche si basano sull'esecuzione dell'SDK Java e non sono rappresentative delle caratteristiche di rendimento di altri SDK di linguaggio. Per saperne di più, consulta Rendimento di Beam IO.

Best practice

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

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

  • Monitora i nodi Bigtable. Se riscontri colli di bottiglia delle prestazioni, controlla se le risorse come l'utilizzo della CPU sono vincolate in Bigtable. Per saperne di più, consulta Monitoring.

  • 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 regolare il timeout del tentativo.

  • Valuta la possibilità di attivare la scalabilità automatica di Bigtable o di ridimensionare il cluster Bigtable in modo che si adatti alle dimensioni dei job Dataflow.

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

  • Se viene eseguita un'elaborazione significativa su un elemento Bigtable prima di uno shuffle, le chiamate a Bigtable potrebbero andare in timeout. In questo caso, puoi chiamare withMaxBufferElementCount per memorizzare gli elementi nel buffer. Questo metodo converte l'operazione di lettura da streaming a paginata, evitando il problema.

  • Se utilizzi un singolo cluster Bigtable sia per le pipeline di streaming sia per quelle batch e il rendimento si riduce sul lato Bigtable, valuta la possibilità di configurare la replica sul cluster. Quindi separa le pipeline batch e di streaming in modo che leggano da repliche diverse. Per saperne di più, consulta Panoramica della replica.

Passaggi successivi