Para ler dados do Bigtable para o Dataflow, use o conetor Bigtable I/O do Apache Beam.
Paralelismo
O paralelismo é controlado pelo número de nós no cluster do Bigtable. Cada nó gere um ou mais intervalos de chaves, embora os intervalos de chaves possam mover-se entre nós como parte do equilíbrio de carga. Para mais informações, consulte Leituras e desempenho na documentação do Bigtable.
É-lhe cobrado o número de nós nos clusters da sua instância. Consulte os preços do Bigtable.
Desempenho
A tabela seguinte mostra as métricas de desempenho das operações de leitura do Bigtable. As cargas de trabalho foram executadas num e2-standard2trabalhador, usando o
SDK Apache Beam 2.48.0 para Java. Não usaram o Runner v2.
| 100 M de registos | 1 kB | 1 coluna | Débito (bytes) | Tráfego transmitido (elementos) |
|---|---|---|
| Lida | 180 MBps | 170 000 elementos por segundo |
Estas métricas baseiam-se em pipelines de processamento em lote simples. Destinam-se a comparar o desempenho entre conectores de E/S e não são necessariamente representativos de pipelines do mundo real. O desempenho do pipeline do Dataflow é complexo e é uma função do tipo de VM, dos dados que estão a ser processados, do desempenho das origens e dos destinos externos, e do código do utilizador. As métricas baseiam-se na execução do SDK Java e não são representativas das características de desempenho de outros SDKs de idiomas. Para mais informações, consulte o artigo Desempenho do Beam IO.
Práticas recomendadas
Para novos pipelines, use o conetor
BigtableIOe não oCloudBigtableIO.Crie perfis de apps separados para cada tipo de pipeline. Os perfis de apps permitem melhores métricas para diferenciar o tráfego entre pipelines, tanto para apoio técnico como para acompanhamento da utilização.
Monitorize os nós do Bigtable. Se tiver problemas de desempenho, verifique se os recursos, como a utilização da CPU, estão restritos no Bigtable. Para mais informações, consulte a secção Monitorização.
Em geral, os limites de tempo predefinidos estão bem ajustados para a maioria dos pipelines. Se um pipeline de streaming parecer ficar bloqueado a ler do Bigtable, experimente chamar
withAttemptTimeoutpara ajustar o limite de tempo da tentativa.Considere ativar o dimensionamento automático do Bigtable ou redimensionar o cluster do Bigtable para dimensionar com o tamanho das suas tarefas do Dataflow.
Considere definir
maxNumWorkersna tarefa do Dataflow para limitar o carregamento no cluster do Bigtable.Se for feito um processamento significativo num elemento do Bigtable antes de uma mistura, as chamadas para o Bigtable podem exceder o limite de tempo. Nesse caso, pode chamar
withMaxBufferElementCountpara colocar em buffer os elementos. Este método converte a operação de leitura de streaming para paginada, o que evita o problema.Se usar um único cluster do Bigtable para pipelines de streaming e em lote, e o desempenho se degradar no lado do Bigtable, considere configurar a replicação no cluster. Em seguida, separe os pipelines de processamento em lote e de streaming para que leiam a partir de réplicas diferentes. Para mais informações, consulte o artigo Vista geral da replicação.
O que se segue?
- Leia a documentação do conetor Bigtable I/O.
- Consulte a lista de modelos fornecidos pela Google.