Usar o Dataflow Runner V2

Quando você usa o Dataflow para executar o pipeline, o executor do Dataflow faz o upload do código e dependências do pipeline para um bucket do Cloud Storage e cria um job do Dataflow. Esse job do Dataflow executa o pipeline em recursos gerenciados no Google Cloud.

  • Nos pipelines em lote que usam o SDK do Apache Beam para Java versão 2.54.0 ou posterior, o Runner v2 é ativado por padrão.
  • Para pipelines que usam o SDK do Apache Beam para Java, o Runner v2 é necessário ao executar pipelines de várias linguagens, usar contêineres personalizados ou usar pipelines de fluxo de alterações do Spanner ou do Bigtable. Em outros casos, use o executor padrão.
  • Para pipelines que usam o SDK do Apache Beam para Python versão 2.21.0 ou posterior, o Runner v2 está ativado por padrão. Para pipelines que usam as versões 2.45.0 e posteriores do SDK do Apache Beam para Python, o Dataflow Runner v2 é o único executor do Dataflow disponível.
  • No SDK do Apache Beam para Go, o Dataflow Runner v2 é o único executor do Dataflow disponível.

O Runner v2 usa uma arquitetura baseada em serviços que beneficia alguns pipelines:

Limitações e restrições

O Dataflow Runner v2 tem os seguintes requisitos:

  • O Dataflow Runner v2 requer o Streaming Engine. para jobs de streaming.
  • Como o Dataflow Runner v2 requer o Streaming Engine para jobs de streaming, qualquer transformação do Apache Beam que exija o Dataflow Runner v2 também precisa usar o Streaming Engine para jobs de streaming. Por exemplo, o conector de E/S do Pub/Sub Lite do SDK do Apache Beam para Python é uma transformação de linguagem que requer o Dataflow Runner v2. Se você tentar desativar o Streaming Engine para um job ou modelo que usa essa transformação, o job falha.
  • Para pipelines de streaming que usam o SDK do Apache Beam para Java, as classes MapState e SetState não são compatíveis com o Runner v2. Para usar as classes MapState e SetState com pipelines Java, ative o Streaming Engine, desative o Runner v2 e use a versão 2.58.0 ou mais recente do SDK do Apache Beam.
  • Para pipelines em lote e de streaming que usam o SDK do Apache Beam para Java, as classes OrderedListState e AfterSynchronizedProcessingTime não são suportados.

Ativar o Dataflow Runner v2

Para ativar o Dataflow Runner v2, siga as instruções de configuração para seu SDK do Apache Beam:

Java

O Dataflow Runner v2 requer as versões 2.30.0 ou posteriores do SDK do Apache Beam para Java, sendo recomendada a versão 2.44.0 ou posterior.

Nos pipelines em lote que usam o SDK do Apache Beam para Java versão 2.54.0 ou posterior, o Runner v2 é ativado por padrão.

Para ativar o Runner v2, execute o job com a flag --experiments=use_runner_v2.

Para desativar o Runner v2, use a flag --experiments=disable_runner_v2. O Runner v2 é ativado automaticamente em alguns pipelines. Para impedir que o pipeline use esse recurso, use a opção --experiments=disable_runner_v2.

Python

Para pipelines que usam o SDK do Apache Beam para Python versão 2.21.0 ou posterior, o Runner v2 está ativado por padrão.

O Dataflow Runner v2 não é compatível com o SDK do Apache Beam para Python versão 2.20.0 e anteriores.

Em alguns casos, talvez o pipeline não use o Runner v2, embora seja executado em uma versão compatível do SDK. Nesses casos, para executar o job com o Runner v2, use a flag --experiments=use_runner_v2.

Se você quiser desativar o Runner v2 e seu job for identificado como o experimento auto_runner_v2, use a flag --experiments=disable_runner_v2. A desativação do Runner v2 não é compatível com o SDK do Apache Beam para Python versão 2.45.0 e posterior.

Go

O Dataflow Runner v2 é o único executor do Dataflow disponível para o SDK do Apache Beam para Go. O Runner v2 é ativado por padrão.

Monitorar o job

Use a interface de monitoramento para visualizar as métricas do job do Dataflow, como a utilização da memória, da CPU e muito mais.

Os registros da VM de worker estão disponíveis na Análise de registros e na interface de monitoramento do Dataflow. Os registros da VM de worker incluem registros do processo do arcabouço de execução do executor e registros dos processos do SDK. Use os registros da VM para solucionar problemas do job.

Resolver problemas do Runner v2

Para solucionar problemas de jobs usando o Dataflow Runner v2, siga as etapas padrão de solução de problemas do pipeline. A lista a seguir fornece informações adicionais sobre como o Dataflow Runner v2 funciona:

  • Os jobs do Dataflow Runner v2 executam dois tipos de processos na VM de worker: o processo de SDK e o de aproveitamento do executor. Dependendo do pipeline e do tipo de VM, pode haver um ou mais processos de SDK, mas há apenas um processo de aproveitamento do executor por VM.
  • Os processos do SDK executam o código do usuário e outras funções específicas da linguagem.O processo de proteção do executor gerencia todo o restante.
  • O processo de aproveitamento do executor aguarda que todos os processos de SDK se conectem a ele antes de começar a solicitar trabalho do Dataflow.
  • Os jobs podem atrasar se a VM de worker fizer o download e instalar dependências durante a inicialização do processo do SDK. Se ocorrerem problemas durante um processo de SDK, como ao iniciar ou instalar bibliotecas, o worker informará o status como não íntegro. Se os tempos de inicialização aumentarem, ative a API Cloud Build no projeto e envie o pipeline com o seguinte parâmetro: --prebuild_sdk_container_engine=cloud_build.
  • Como o Dataflow Runner v2 usa checkpoint, cada worker pode aguardar até cinco segundos enquanto armazena as alterações em buffer antes de enviá-las para processamento adicional. Como resultado, é esperada uma latência de aproximadamente seis segundos.
  • Para diagnosticar problemas no seu código de usuário, examine os registros do worker dos processos do SDK. Se você encontrar erros nos registros da proteção do executor, entre em contato com o suporte para registrar um bug.
  • Para depurar erros comuns relacionados aos pipelines de várias linguagens do Dataflow, consulte o guia Dicas de pipelines em várias linguagens.