Implantar pipelines do Dataflow

Este documento traz uma visão geral da implantação de um pipeline, destacando algumas operações que podem ser executadas em um pipeline implantado.

executar o pipeline

Depois de criar e testar o pipeline do Apache Beam, execute-o. É possível executar o pipeline localmente, o que permite testar e depurar o pipeline do Apache Beam, ou no Dataflow, um sistema de processamento de dados disponível para executar pipelines do Apache Beam.

Executar no local

Execute o pipeline localmente:

Java

O código de exemplo a seguir, retirado do guia de início rápido, mostra como executar o pipeline WordCount localmente. Saiba como executar o pipeline em Java localmente.

No terminal, execute o seguinte comando:

  mvn compile exec:java \
      -Dexec.mainClass=org.apache.beam.examples.WordCount \
      -Dexec.args="--output=counts"
  

Python

O código de exemplo a seguir, retirado do guia de início rápido, mostra como executar o pipeline WordCount localmente. Saiba como executar o pipeline em Python localmente.

No terminal, execute o seguinte comando:

python -m apache_beam.examples.wordcount \ --output outputs

Go

O código de exemplo a seguir, retirado do guia de início rápido, mostra como executar o pipeline WordCount localmente. Saiba como executar o pipeline em Go localmente.

No terminal, execute o seguinte comando:

    go run wordcount.go --input gs://dataflow-samples/shakespeare/kinglear.txt \ --output outputs
  

Saiba como executar o pipeline localmente, na máquina, usando o executor direto.

Executar no Dataflow

Execute o pipeline no Dataflow:

Java

O código de exemplo a seguir, retirado do guia de início rápido, mostra como executar o pipeline WordCount no Dataflow. Saiba como executar o pipeline em Java no Dataflow.

No terminal, execute o seguinte comando (no diretório word-count-beam):

  mvn -Pdataflow-runner compile exec:java \
    -Dexec.mainClass=org.apache.beam.examples.WordCount \
    -Dexec.args="--project=PROJECT_ID \
    --gcpTempLocation=gs://BUCKET_NAME/temp/ \
    --output=gs://BUCKET_NAME/output \
    --runner=DataflowRunner \
    --region=REGION"
    

Substitua:

  • PROJECT_ID: o ID do projeto do Google Cloud
  • BUCKET_NAME: o nome do bucket do Cloud Storage
  • REGION: uma região do Dataflow, como us-central1

Python

O código de exemplo a seguir, retirado do guia de início rápido, mostra como executar o pipeline WordCount no Dataflow. Saiba como executar o pipeline em Python no Dataflow.

No terminal, execute o seguinte comando:

python -m apache_beam.examples.wordcount \
    --region DATAFLOW_REGION \
    --input gs://dataflow-samples/shakespeare/kinglear.txt \
    --output gs://STORAGE_BUCKET/results/outputs \
    --runner DataflowRunner \
    --project PROJECT_ID \
    --temp_location gs://STORAGE_BUCKET/tmp/

Substitua:

  • DATAFLOW_REGION: a região onde você quer implantar o job do Dataflow, por exemplo, europe-west1

    A sinalização --region substitui a região padrão definida no servidor de metadados, no cliente local ou nas variáveis de ambiente.

  • STORAGE_BUCKET: o nome do Cloud Storage que você copiou anteriormente.
  • PROJECT_ID: o ID do projeto do Google Cloud que você copiou anteriormente.

Go

O código de exemplo a seguir, retirado do guia de início rápido, mostra como executar o pipeline WordCount no Dataflow. Saiba como executar o pipeline em Go no Dataflow.

No terminal, execute o seguinte comando:

  posix-terminal go run wordcount.go --input gs://dataflow-samples/shakespeare/kinglear.txt \
    --output gs://STORAGE_BUCKET/results/outputs \
    --runner dataflow \
    --project PROJECT_ID \
    --region DATAFLOW_REGION \
    --staging_location gs://STORAGE_BUCKET/binaries/
  

Substitua:

  • STORAGE_BUCKET: o nome do bucket do Cloud Storage.
  • PROJECT_ID: o ID do projeto do Google Cloud.
  • DATAFLOW_REGION: a região em que você quer implantar o job do Dataflow. Por exemplo, europe-west1. Confira uma lista de locais disponíveis em Locais do Dataflow. A sinalização --region substitui a região padrão definida no servidor de metadados, no cliente local ou nas variáveis de ambiente.

Saiba como executar o pipeline no serviço Dataflow usando o executor do Dataflow.

Ao executar seu pipeline, o Dataflow transforma o código do pipeline do Apache Beam em um job do Dataflow. O Dataflow gerencia totalmente os serviços do Google Cloud, como oCompute Engine e o Cloud Storage para executar o job do Dataflow job e ativando e desmontando automaticamente os recursos necessários. Saiba mais sobre como o Dataflow transforma o código do Apache Beam em um job do Dataflow em Ciclo de vida do pipeline.

Validação do pipeline

Quando você executa o pipeline no Dataflow, antes da inicialização do job, o Dataflow executa testes de validação no pipeline. Quando um teste de validação encontra problemas com o pipeline, o Dataflow falha no envio do job antecipadamente. Nos registros do job, o Dataflow inclui mensagens com o texto a seguir. Cada mensagem também inclui detalhes sobre as descobertas da validação e instruções para resolver o problema.

The preflight pipeline validation failed for job JOB_ID.

Os testes de validação executados dependem dos recursos e serviços que seu job do Dataflow usa.

  • Se a API Service Usage estiver ativada para seu projeto, os testes de validação do pipeline vão verificar se os serviços necessários para executar o job do Dataflow estão ativados.
  • Se a API Cloud Resource Manager estiver ativada no projeto, os testes de validação do pipeline verificarão se você tem as configurações no nível do projeto necessárias para executar o job do Dataflow.

Para mais informações sobre como ativar serviços, consulte Como ativar e desativar serviços.

Para informações sobre como resolver problemas de permissão detectados durante a validação do pipeline, consulte Falha na validação do pipeline.

Se você quiser substituir a validação do pipeline e iniciar seu job com erros de validação, use a seguinte opção de serviço do pipeline:

Java

--dataflowServiceOptions=enable_preflight_validation=false

Python

--dataflow_service_options=enable_preflight_validation=false

Go

--dataflow_service_options=enable_preflight_validation=false

Definir opções de canal

Para controlar alguns aspectos de como o Dataflow executa o job, defina opções de pipeline no código de pipeline do Apache Beam. Por exemplo, use opções de pipeline para definir se o pipeline é executado em máquinas virtuais de worker, no back-end do serviço Dataflow ou localmente.

Gerenciar dependências do pipeline

Muitos pipelines do Apache Beam podem ser executados usando os ambientes de execução padrão do Dataflow. No entanto, alguns casos de uso de processamento de dados se beneficiam do uso de mais bibliotecas ou classes. Nesses casos, pode ser necessário gerenciar as dependências do pipeline. Para mais informações sobre como gerenciar dependências, consulte Gerenciar dependências de pipeline no Dataflow.

Monitorar o job

O Dataflow fornece visibilidade para seus jobs com ferramentas como a interface de monitoramento do Dataflow e a interface de linha de comando do Dataflow.

Acessar VMs de worker

É possível visualizar as instâncias de VM referentes a um determinado pipeline usando o console do Google Cloud. A partir desse ponto, use o SSH para acessar cada instância. No entanto, quando o job é concluído ou falha, o serviço do Dataflow é encerrado automaticamente e limpa as instâncias de VM.

Otimizações de jobs

Além de gerenciar os recursos do Google Cloud, o Dataflow executa e otimiza automaticamente vários aspectos do processamento paralelo distribuído.

Carregamento em paralelo e distribuição

O Dataflow particiona automaticamente os dados e distribui o código do worker para as instâncias do Compute Engine para processamento paralelo. Saiba mais sobre carregamento em paralelo e distribuição.

Otimizações de fusão e de combinação

O Dataflow usa o código do pipeline para criar um gráfico de execução que representa as PCollections e as transformações do pipeline, otimizando esse gráfico para um desempenho e uso de recursos mais eficientes. Além disso, o Dataflow otimiza de modo automático as operações de custo potencialmente alto, como agregações de dados. Saiba mais sobre Otimização de fusão e Otimização de combinação.

Recursos de ajuste automático

O serviço Dataflow inclui vários recursos que fornecem ajuste dinâmico de alocação de recursos e particionamento de dados. Esses recursos ajudam o Dataflow a executar o job da maneira mais rápida e eficiente possível. Esses recursos incluem o seguinte:

Streaming Engine

Por padrão, o executor de pipelines do Dataflow executa as etapas do pipeline de streaming inteiramente em máquinas virtuais de worker e consome a CPU, a memória e o armazenamento em disco permanente do worker. O Streaming Engine do Dataflow muda a execução do pipeline das VMs de worker para o back-end do serviço Dataflow. Saiba mais em Streaming Engine.

Programação flexível de recursos do Dataflow

O Dataflow FlexRS reduz os custos de processamento em lote usando técnicas avançadas de programação, o serviço Dataflow Shuffle e uma combinação de instâncias de máquinas virtuais (VMs) preemptivas e VMs comuns. Ao executar VMs preemptivas e VMs comuns em paralelo, o Dataflow melhora a experiência do usuário caso o Compute Engine interrompa as instâncias de VM preemptiva durante um evento do sistema. O FlexRS ajuda a garantir que o pipeline continue a progredir e que você não perca o trabalho anterior quando o Compute Engine força a interrupção das VMs preemptivas. Saiba mais sobre o FlexRS em Usar a programação flexível de recursos no Dataflow.

VM protegida do Dataflow

A partir de 1º de junho de 2022, o serviço Dataflow usará VMs protegidas com todos os workers. Saiba mais sobre os recursos da VM protegida em VM protegida.