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
BigtableIOconnettore, nonCloudBigtableIO.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
withAttemptTimeoutper 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
maxNumWorkersnel 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
withMaxBufferElementCountper 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
- Leggi la documentazione del connettore Bigtable I/O.
- Consulta l'elenco dei modelli forniti da Google.