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