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:
O Dataflow Runner v2 permite pré-criar seu contêiner do Python, o que pode melhorar os tempos de inicialização da VM e o desempenho do escalonamento automático horizontal. Para mais informações, consulte Dependências do Python pré-criadas.
O Dataflow Runner v2 é compatível com pipelines em vários idiomas, um recurso que permite que o pipeline do Apache Beam use transformações definidas em outros SDKs do Apache Beam. O Dataflow Runner v2 é compatível com o uso de transformações Java de um pipeline do SDK do Python e com o uso de transformações do Python de um pipeline do SDK do Java. Quando você executa pipelines do Apache Beam sem o Runner v2, o executor do Dataflow usa workers específicos da linguagem.
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
eSetState
não são compatíveis. - Para pipelines em lote e de streaming que usam o SDK do Apache Beam para Java, as
classes
OrderedListState
eAfterSynchronizedProcessingTime
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.