Use o Streaming Engine para tarefas de streaming

O Streaming Engine do Dataflow move a execução do pipeline para fora das máquinas virtuais (VMs) do trabalhador e para o backend do serviço Dataflow. Quando não usa o Streaming Engine para tarefas de streaming, o executor do Dataflow executa os passos do pipeline de streaming totalmente em VMs de trabalho, consumindo CPU, memória e armazenamento em disco persistente do trabalhador.

O Streaming Engine está ativado por predefinição para os seguintes pipelines:

  • Pipelines de streaming que usam a versão 2.21.0 ou posterior do SDK do Apache Beam Python e o Python 3.
  • Pipelines de streaming que usam a versão 2.33.0 ou posterior do SDK Go do Apache Beam.

Para saber mais sobre a implementação do Streaming Engine, consulte o artigo Streaming Engine: Execution Model for Highly-Scalable, Low-Latency Data Processing (Streaming Engine: modelo de execução para processamento de dados de baixa latência e altamente escalável).

Vantagens

O modelo de motor de streaming tem as seguintes vantagens:

  • Redução da utilização de recursos de CPU, memória e armazenamento do Persistent Disk nas VMs de trabalho. O Streaming Engine funciona melhor com tipos de máquinas de trabalho mais pequenos (n1-standard-2 em vez de n1-standard-4). Não requer Persistent Disk além de um pequeno disco de arranque do trabalhador, o que leva a um menor consumo de recursos e de quota.
  • Escalamento automático horizontal mais reativo em resposta a variações no volume de dados recebidos. O Streaming Engine oferece uma escalabilidade mais suave e detalhada dos trabalhadores.
  • Melhor capacidade de suporte, porque não precisa de voltar a implementar os seus pipelines para aplicar atualizações de serviços.

A maior parte da redução dos recursos de trabalho resulta da transferência do trabalho para o serviço Dataflow. Por esse motivo, existe um custo associado à utilização do Streaming Engine.

Apoio técnico e limitações

  • Para o SDK Java, o Streaming Engine requer a versão 2.10.0 ou posterior do SDK do Apache Beam.
  • Para o SDK Python, o Streaming Engine requer a versão 2.16.0 ou posterior do SDK Apache Beam.
  • Para o Go SDK, o Streaming Engine requer a versão 2.33.0 ou posterior do Apache Beam SDK.
  • Não pode atualizar pipelines que já estejam em execução para usar o Streaming Engine. Se o seu pipeline estiver em produção sem o Streaming Engine e quiser usar o Streaming Engine, pare o pipeline usando a opção Drain do Dataflow. Em seguida, especifique o parâmetro Streaming Engine e volte a executar o pipeline.
  • Para trabalhos que usam o Streaming Engine, os dados de entrada agregados para as janelas abertas têm um limite de 60 GB por chave. Os dados de entrada agregados incluem elementos em buffer e estado personalizado. Quando um pipeline excede este limite, fica bloqueado com um elevado atraso do sistema, e é apresentada uma mensagem no registo de tarefas a indicar que o limite foi excedido. Como prática recomendada, evite designs de pipelines que resultem em chaves grandes. Para mais informações, consulte o artigo Escrever pipelines do Dataflow tendo em conta a escalabilidade.
  • Suporta chaves de encriptação geridas pelo cliente (CMEK)

Use o Streaming Engine

Esta funcionalidade está disponível em todas as regiões onde o Dataflow é suportado. Para ver as localizações disponíveis, leia o artigo Localizações do Dataflow.

Java

O Streaming Engine requer a versão 2.10.0 ou posterior do SDK Java do Apache Beam.

Para usar o Streaming Engine para os seus pipelines de streaming, especifique o seguinte parâmetro:

  • --enableStreamingEngine se estiver a usar o SDK do Apache Beam para Java versões 2.11.0 ou posteriores.
  • --experiments=enable_streaming_engine se estiver a usar a versão 2.10.0 do SDK do Apache Beam para Java.

Se usar o Streaming Engine do Dataflow para o seu pipeline, não especifique o parâmetro --zone. Em alternativa, especifique o parâmetro --region e defina o valor para uma região suportada. O Dataflow seleciona automaticamente a zona na região que especificou. Se especificar o parâmetro --zone e o definir para uma zona fora das regiões disponíveis, o Dataflow comunica um erro.

O Streaming Engine funciona melhor com tipos de máquinas de trabalhador principais mais pequenos. Use o tipo de tarefa para determinar se deve usar um tipo de máquina de trabalhador com muita memória. Alguns exemplos de tipos de máquinas que recomendamos incluem --workerMachineType=n1-standard-2 e --workerMachineType=n1-highmem-2. Também pode definir --diskSizeGb=30 porque o Streaming Engine só precisa de espaço para a imagem de arranque do trabalhador e os registos locais. Estes valores são os valores predefinidos.

Python

O Streaming Engine requer a versão 2.16.0 ou posterior do SDK do Apache Beam Python.

O Streaming Engine está ativado por predefinição para novos pipelines de streaming do Dataflow quando as seguintes condições são cumpridas:

Na versão 2.45.0 ou posterior do SDK Python, não pode desativar o Streaming Engine para pipelines de streaming. Na versão 2.44.0 ou anterior do SDK do Python, para desativar o Streaming Engine, especifique o seguinte parâmetro:

--experiments=disable_streaming_engine

Se usar o Python 2, para ativar o Streaming Engine, especifique o seguinte parâmetro:

--enable_streaming_engine

Se usar o Streaming Engine do Dataflow no seu pipeline, não especifique o parâmetro --zone. Em alternativa, especifique o parâmetro --region e defina o valor para uma região suportada. O Dataflow seleciona automaticamente a zona na região que especificou. Se especificar o parâmetro --zone e o definir para uma zona fora das regiões disponíveis, o Dataflow comunica um erro.

O Streaming Engine funciona melhor com tipos de máquinas de trabalhador principais mais pequenos. Use o tipo de tarefa para determinar se deve usar um tipo de máquina de trabalhador com muita memória. Alguns exemplos de tipos de máquinas que recomendamos incluem --workerMachineType=n1-standard-2 e --workerMachineType=n1-highmem-2. Também pode definir --disk_size_gb=30 porque o Streaming Engine só precisa de espaço para a imagem de arranque do trabalhador e os registos locais. Estes valores são os valores predefinidos.

Go

O Streaming Engine requer a versão 2.33.0 ou posterior do SDK Go do Apache Beam.

O Streaming Engine está ativado por predefinição para novos pipelines de streaming do Dataflow que usam o SDK Go do Apache Beam.

Se quiser desativar o Streaming Engine no pipeline de streaming Go, especifique o seguinte parâmetro. Este parâmetro tem de ser especificado sempre que quiser desativar o Streaming Engine.

--experiments=disable_streaming_engine

Se usar o Streaming Engine do Dataflow no seu pipeline, não especifique o parâmetro --zone. Em alternativa, especifique o parâmetro --region e defina o valor para uma região suportada. O Dataflow seleciona automaticamente a zona na região que especificou. Se especificar o parâmetro --zone e o definir para uma zona fora das regiões disponíveis, o Dataflow comunica um erro.

O Streaming Engine funciona melhor com tipos de máquinas de trabalhador principais mais pequenos. Use o tipo de tarefa para determinar se deve usar um tipo de máquina de trabalhador com muita memória. Alguns exemplos de tipos de máquinas que recomendamos incluem --workerMachineType=n1-standard-2 e --workerMachineType=n1-highmem-2. Também pode definir --disk_size_gb=30 porque o Streaming Engine só precisa de espaço para a imagem de arranque do trabalhador e os registos locais. Estes valores são os valores predefinidos.

CLI gcloud

Quando executa o pipeline através do comando gcloud dataflow jobs run ou do comando gcloud dataflow flex-template run para ativar o Streaming Engine, use o seguinte sinalizador:

--enable-streaming-engine

Para desativar o motor de streaming, use a seguinte flag:

--additional-experiments=disable_streaming_engine

REST

Quando executa o pipeline através do método projects.locations.jobs.create na API REST, use o recurso Job para ativar ou desativar o Streaming Engine. Para ativar o motor de streaming, em environment, defina o campo experiments como enable_streaming_engine:

"environment": {
          "experiments": "enable_streaming_engine"
      }

Para desativar o motor de streaming, em environment, defina o campo experiments como disable_streaming_engine:

"environment": {
          "experiments": "disable_streaming_engine"
      }

Preços

O Streaming Engine do Dataflow oferece um modelo de faturação baseado em recursos, no qual lhe é faturado o total de recursos consumidos pela sua tarefa. Com a faturação baseada em recursos, os recursos do Streaming Engine consumidos pela sua tarefa são medidos e contabilizados em unidades de computação do Streaming Engine. A faturação é feita com base na CPU do trabalhador, na memória do trabalhador e nas unidades de computação do Streaming Engine.

Use a faturação baseada em recursos

Para usar a faturação baseada em recursos, quando iniciar ou atualizar a tarefa, inclua a seguinte opção do serviço Dataflow.

Java

--dataflowServiceOptions=enable_streaming_engine_resource_based_billing

Python

--dataflow_service_options=enable_streaming_engine_resource_based_billing

Go

--dataflow_service_options=enable_streaming_engine_resource_based_billing

Faturação de dados processados (antiga)

A menos que ative a faturação baseada em recursos, os seus trabalhos são faturados através da faturação de dados processados antiga.

Valide o modelo de faturação

A menos que esteja a usar o Dataflow Prime, quando tem tarefas que usam a faturação baseada em recursos, a fatura inclui o SKU Streaming Engine Compute Unit. Quando tem tarefas que usam a faturação de dados processados, a fatura inclui o SKU Streaming Engine data processed. Se tiver alguns trabalhos que usam a faturação baseada em recursos e outros trabalhos que usam a faturação de dados processados, a fatura inclui ambas as SKUs.

Quando usa o Dataflow Prime com faturação baseada em recursos, é usado o SKU da unidade de computação de dados (DCU).

Para ver que modelo de preços a sua tarefa usa, na interface de monitorização do Dataflow, selecione a sua tarefa. Se o seu trabalho usar a faturação baseada em recursos, o painel lateral Informações do trabalho inclui um campo Unidades de cálculo do Streaming Engine.

Se tiver dúvidas sobre a faturação, contacte o apoio ao cliente do Google Cloud.