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