Ler do Bigtable para o Dataflow

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 BigtableIO e não o CloudBigtableIO.

  • 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 withAttemptTimeout para 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 maxNumWorkers na 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 withMaxBufferElementCount para 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?