Use o executor do Dataflow v2

Quando usa o Dataflow para executar o seu pipeline, o executor do Dataflow carrega o código e as dependências do pipeline para um contentor do Cloud Storage e cria uma tarefa do Dataflow. Esta tarefa do Dataflow executa o seu pipeline em recursos geridos na Google Cloud Platform.

  • Para pipelines em lote que usam as versões do SDK Java do Apache Beam 2.54.0 ou posteriores, o Runner v2 está ativado por predefinição.
  • Para pipelines que usam o SDK Java do Apache Beam, o Runner v2 é necessário quando executa pipelines multilingues, usa contentores personalizados ou usa pipelines de fluxo de alterações do Spanner ou do Bigtable. Noutros casos, use o executor predefinido.
  • Para pipelines que usam as versões do SDK Python do Apache Beam 2.21.0 ou posteriores, o Runner v2 está ativado por predefinição. Para pipelines que usam as versões 2.45.0 e posteriores do SDK do Apache Beam Python, o Dataflow Runner v2 é o único Dataflow Runner disponível.
  • Para o SDK Apache Beam para Go, o Dataflow Runner v2 é o único Dataflow Runner 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 tarefas de streaming.
  • Uma vez que o Dataflow Runner v2 requer o Streaming Engine para tarefas de streaming, qualquer transformação do Apache Beam que requeira o Dataflow Runner v2 também requer a utilização do Streaming Engine para tarefas de streaming. Por exemplo, o conetor de E/S do Pub/Sub Lite para o SDK Apache Beam para Python é uma transformação entre linguagens que requer o Dataflow Runner v2. Se tentar desativar o Streaming Engine para uma tarefa ou um modelo que use esta transformação, a tarefa falha.
  • Para pipelines de streaming que usam o SDK Java do Apache Beam, as classes MapState e SetState não são suportadas 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 posterior do SDK do Apache Beam.
  • Para pipelines de streaming e em lote que usam o SDK Java do Apache Beam, a classe AfterSynchronizedProcessingTime não é suportada.
  • Não é possível executar modelos clássicos do Dataflow com uma versão do executor do Dataflow diferente daquela com que foram criados. Isto significa que os modelos clássicos fornecidos pela Google não podem ativar o Runner v2. Para ativar o Runner v2 para modelos personalizados, defina a flag --experiments=use_runner_v2 quando criar o modelo.
  • Devido a um problema de escalamento automático conhecido, o Runner v2 está desativado por predefinição para pipelines Java em lote que requerem processamento com estado. Pode continuar a ativar o Runner v2 para esses pipelines (consulte a secção Ativar o Runner v2), mas o desempenho do pipeline pode ser severamente limitado.

  • Em alguns pipelines, o Runner v2 pode aumentar a frequência de falhas de consistência. Pode ver o seguinte erro nos ficheiros de registo: "Internal consistency check failed, the output is likely incorrect. Tente novamente a tarefa". Uma possível mitigação é adicionar uma transformação Reshuffle após o passo Join/GrouByKey. Se a taxa de falhas não for tolerável e a mitigação não resolver o problema, experimente desativar o Runner v2.

Ative o Runner v2

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

Java

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

Para pipelines em lote que usam as versões do SDK Java do Apache Beam 2.54.0 ou posteriores, o Runner v2 está ativado por predefinição.

Para ativar o Runner v2, execute a tarefa com a experiência use_runner_v2. Para mais informações, consulte o artigo Defina opções de pipeline experimentais.

Python

Para pipelines que usam as versões do SDK Python do Apache Beam 2.21.0 ou posteriores, o Runner v2 está ativado por predefinição.

O Dataflow Runner v2 não é suportado com as versões 2.20.0 e anteriores do SDK Python do Apache Beam.

Em alguns casos, a sua pipeline pode não usar o Runner v2, mesmo que a pipeline seja executada numa versão do SDK suportada. Para executar a tarefa com o Runner v2, defina a use_runner_v2 experiência. Para mais informações, consulte o artigo Defina opções de pipeline experimentais.

Go

O Dataflow Runner v2 é o único Dataflow runner disponível para o SDK do Apache Beam para Go. O Runner v2 está ativado por predefinição.

Desative o Runner v2

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

Java

Para desativar o Runner v2, defina a experiência disable_runner_v2. Para mais informações, consulte Defina opções de pipeline experimentais.

Python

A desativação do Runner v2 não é suportada com as versões 2.45.0 e posteriores do SDK Python do Apache Beam.

Para versões anteriores do SDK Python, se a sua tarefa for identificada como estando a usar a experiência auto_runner_v2, pode desativar o Runner v2 definindo a experiência disable_runner_v2. Para mais informações, consulte o artigo Defina opções de pipeline experimentais.

Go

Não é possível desativar o Dataflow Runner v2 em Go. O Runner v2 é o único Dataflow Runner disponível para o SDK do Apache Beam para Go.

Monitorize o seu trabalho

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

Os registos de VMs de trabalho estão disponíveis através do Explorador de registos e da interface de monitorização do Dataflow. Os registos da VM do trabalhador incluem registos do processo de preparação do executor e registos dos processos do SDK. Pode usar os registos da VM para resolver problemas da tarefa.

Resolva problemas com o Runner v2

Para resolver problemas de tarefas com o Dataflow Runner v2, siga os passos de resolução de problemas de pipelines padrão. A lista seguinte fornece informações adicionais sobre o funcionamento do Dataflow Runner v2:

  • As tarefas do Dataflow Runner v2 executam dois tipos de processos na VM do trabalhador: o processo do SDK e o processo do mecanismo do executor. Consoante o pipeline e o tipo de VM, pode haver um ou mais processos do SDK, mas só existe um processo de enquadramento do executor por VM.
  • Os processos do SDK executam o código do utilizador e outras funções específicas da linguagem. O processo de enquadramento do executor gere tudo o resto.
  • O processo do ambiente de execução aguarda que todos os processos do SDK se liguem a ele antes de começar a pedir trabalho ao Dataflow.
  • Os trabalhos podem sofrer atrasos se a VM do trabalhador transferir e instalar dependências durante o arranque do processo do SDK. Se ocorrerem problemas durante um processo do SDK, como ao iniciar ou instalar bibliotecas, o trabalhador comunica o respetivo estado como não saudável. Se os tempos de arranque aumentarem, ative a API Cloud Build no seu projeto e envie o pipeline com o seguinte parâmetro: --prebuild_sdk_container_engine=cloud_build.
  • Uma vez que o Dataflow Runner v2 usa a criação de pontos de verificação, cada trabalhador pode aguardar até cinco segundos enquanto armazena em buffer as alterações antes de enviar as alterações para processamento adicional. Como resultado, é esperada uma latência de aproximadamente seis segundos.
  • Para diagnosticar problemas no seu código de utilizador, examine os registos do trabalhador dos processos do SDK. Se encontrar erros nos registos do arnês do corredor, contacte o apoio técnico para apresentar uma falha.
  • Para depurar erros comuns relacionados com pipelines multilingues do Dataflow, consulte o guia Sugestões para pipelines multilingues.