As cópias instantâneas do Dataflow guardam o estado de um pipeline de streaming, o que lhe permite iniciar uma nova versão da tarefa do Dataflow sem perder o estado. Os instantâneos são úteis para fazer cópias de segurança e recuperação, testar e reverter atualizações para pipelines de streaming e outros cenários semelhantes.
Pode criar um instantâneo do Dataflow de qualquer tarefa de streaming em execução. Tenha em atenção que qualquer nova tarefa que criar a partir de uma imagem instantânea usa o Streaming Engine. Também pode usar uma captura instantânea do Dataflow para migrar o pipeline existente para o Streaming Engine mais eficiente e escalável com um tempo de inatividade mínimo.
Este guia explica como criar instantâneos, gerir instantâneos e criar tarefas a partir de instantâneos.
Antes de começar
- Sign in to your Google Cloud Platform account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Dataflow, Compute Engine, Cloud Logging, Cloud Storage, Google Cloud Storage JSON, BigQuery, Cloud Pub/Sub, Cloud Datastore, and Cloud Resource Manager APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Dataflow, Compute Engine, Cloud Logging, Cloud Storage, Google Cloud Storage JSON, BigQuery, Cloud Pub/Sub, Cloud Datastore, and Cloud Resource Manager APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. - Na Google Cloud consola, aceda à página Dataflow
Tarefas.
É apresentada uma lista de tarefas do Dataflow juntamente com o respetivo estado. Se não vir nenhuma tarefa de streaming, tem de executar uma nova tarefa de streaming. Para ver um exemplo de uma tarefa de streaming, consulte o Início rápido de utilização de modelos.
- Selecione uma tarefa.
- Na barra de menu da página Detalhes da tarefa, clique em Criar resumo.
- Na caixa de diálogo Criar uma imagem instantânea, selecione uma das seguintes
opções:
- Sem origens de dados: selecione esta opção para criar apenas uma imagem instantânea do estado da tarefa do Dataflow.
- Com origens de dados: selecione esta opção para criar uma imagem instantânea do estado da tarefa do Dataflow, juntamente com uma imagem instantânea da origem do Pub/Sub.
- Clique em Criar.
JOB_ID
: o ID da tarefa de streamingDURATION
: a quantidade de tempo (em dias) antes de o instantâneo expirar, após o qual não é possível criar mais tarefas a partir do instantâneo. A flagsnapshot-ttl
é opcional, pelo que, se não for especificada, a imagem instantânea expira em 7 dias. Especifique o valor no seguinte formato:5d
. A duração máxima que pode especificar é de 30 dias (30d
).REGION
: a região onde a sua tarefa de streaming está a ser executada- As cópias instantâneas do Dataflow incorrem num custo de utilização do disco.
- As capturas de ecrã são criadas na mesma região que a tarefa.
- Se a localização do trabalhador da tarefa for diferente da região da tarefa, a criação da imagem instantânea falha. Consulte o guia de regiões do Dataflow.
- Só pode tirar capturas de ecrã de tarefas do Streaming Engine se as tarefas tiverem sido iniciadas ou atualizadas após 1 de fevereiro de 2021.
- Os instantâneos do Pub/Sub criados com o Dataflow são geridos pelo serviço Pub/Sub e incorrem numa cobrança.
- Um instantâneo do Pub/Sub expira no máximo 7 dias após a respetiva criação. A duração total exata é determinada no momento da criação pelo
atraso existente na subscrição de origem. Especificamente, a duração total do instantâneo do Pub/Sub é de
7 days - (age of oldest unacked message in the subscription)
. Por exemplo, considere uma subscrição cuja mensagem não reconhecida mais antiga tem 3 dias. Se for criado um instantâneo do Pub/Sub a partir desta subscrição, o instantâneo, que captura sempre este backlog de 3 dias, expira em 4 dias. Consulte a referência do instantâneo do Pub/Sub. - Durante a operação de instantâneo, a tarefa do Dataflow é pausada e retomada quando o instantâneo estiver pronto. O tempo necessário depende do tamanho do estado do pipeline. Por exemplo, o tempo necessário para tirar instantâneos em tarefas do Streaming Engine é geralmente mais curto do que em tarefas que não são do Streaming Engine.
- Pode cancelar a tarefa enquanto um instantâneo está em curso, o que cancela o instantâneo.
- Não pode atualizar nem esvaziar a tarefa enquanto um instantâneo estiver em curso. Tem de aguardar até que a tarefa seja retomada a partir do processo de instantâneo antes de poder atualizar ou esgotar a tarefa.
- Na Google Cloud consola, aceda à página Dataflow Capturas de ecrã.
- Selecione a captura de ecrã e clique em Eliminar.
- Na caixa de diálogo Eliminar instantâneo, clique em Eliminar para confirmar.
SNAPSHOT_ID
: o ID do seu resumoREGION
: a região onde o seu resumo existe- Na shell ou no terminal, crie uma nova tarefa a partir de uma captura de ecrã. For
example:
mvn -Pdataflow-runner compile exec:java \ -Dexec.mainClass=MAIN_CLASS \ -Dexec.args="--project=PROJECT_ID \ --stagingLocation=gs://STORAGE_BUCKET/staging/ \ --inputFile=gs://apache-beam-samples/shakespeare/* \ --output=gs://STORAGE_BUCKET/output \ --runner=DataflowRunner \ --enableStreamingEngine \ --createFromSnapshot=SNAPSHOT_ID \ --region=REGION"
Substitua o seguinte:
MAIN_CLASS
ouMODULE
: Para pipelines Java, a localização da classe principal que contém o código do pipeline. Para pipelines Python, a localização do módulo que contém o código do pipeline. Por exemplo, quando usa o exemplo Wordcount, o valor éorg.apache.beam.examples.WordCount
.PROJECT_ID
: o ID do seu Google Cloud projetoSTORAGE_BUCKET
: o contentor do Cloud Storage que usa para recursos de tarefas temporários e o resultado finalSNAPSHOT_ID
: o ID do instantâneo a partir do qual quer criar uma nova tarefaREGION
: a localização onde quer executar a nova tarefa do Dataflow
- Na shell ou no terminal, crie uma nova tarefa a partir de uma captura de ecrã. For
example:
python -m MODULE \ --project PROJECT_ID \ --temp_location gs://STORAGE_BUCKET/tmp/ \ --input gs://apache-beam-samples/shakespeare/* \ --output gs://STORAGE_BUCKET/output \ --runner DataflowRunner \ --enable_streaming_engine \ --create_from_snapshot=SNAPSHOT_ID \ --region REGION \ --streaming
Substitua o seguinte:
MAIN_CLASS
ouMODULE
: Para pipelines Java, a localização da classe principal que contém o código do pipeline. Para pipelines Python, a localização do módulo que contém o código do pipeline. Por exemplo, quando usa o exemplo Wordcount, o valor éorg.apache.beam.examples.WordCount
.PROJECT_ID
: o ID do seu Google Cloud projetoSTORAGE_BUCKET
: o contentor do Cloud Storage que usa para recursos de tarefas temporários e o resultado finalSNAPSHOT_ID
: o ID do instantâneo a partir do qual quer criar uma nova tarefaREGION
: a localização onde quer executar a nova tarefa do Dataflow
- As tarefas criadas a partir de instantâneos têm de ser executadas na mesma região onde o instantâneo está armazenado.
Se uma imagem instantânea do Dataflow incluir imagens instantâneas de origens do Pub/Sub, as tarefas criadas a partir de uma imagem instantânea do Dataflow são automaticamente
seek
associadas a essas imagens instantâneas do Pub/Sub como origens. Tem de especificar os mesmos tópicos do Pub/Sub usados pela tarefa de origem quando criar tarefas a partir dessa captura instantânea do Dataflow.Se um instantâneo do Dataflow não incluir instantâneos de origens do Pub/Sub e a tarefa de origem usar uma origem do Pub/Sub, tem de especificar um tópico do Pub/Sub quando criar tarefas a partir desse instantâneo do Dataflow.
As novas tarefas criadas a partir de um resumo continuam sujeitas a uma verificação de compatibilidade de atualizações.
- Não pode criar tarefas a partir de instantâneos com modelos nem com o editor do Dataflow SQL.
- Não pode atualizar nem esgotar uma tarefa enquanto um resumo estiver em curso. Tem de aguardar até que a tarefa seja retomada a partir do processo de instantâneo antes de poder atualizar ou esgotar a tarefa.
- O período de validade da imagem instantânea só pode ser definido através da CLI do Google Cloud.
- As capturas de ecrã de sinks não são suportadas. Por exemplo, não pode criar uma cópia instantânea do BigQuery quando cria uma cópia instantânea do Dataflow.
Criar um instantâneo
Consola
gcloud
Crie um instantâneo:
gcloud dataflow snapshots create \ --job-id=JOB_ID \ --snapshot-ttl=DURATION \ --snapshot-sources=true \ --region=REGION
Substitua o seguinte:
A flag snapshot-sources
especifica se deve ser tirada uma captura instantânea das origens do Pub/Sub juntamente com a captura instantânea do Dataflow. Se true
, as origens do Pub/Sub são
criadas automaticamente como instantâneos, e os IDs dos instantâneos do Pub/Sub são
apresentados na resposta de saída. Depois de executar o comando
create
, verifique o estado da captura de ecrã executando o comando
list
ou o comando
describe
.
Aplicam-se as seguintes condições quando cria instantâneos do Dataflow:
Use a página de instantâneos
Depois de criar um instantâneo, pode usar a página Instantâneos na Google Cloud consola para ver e gerir os instantâneos do seu projeto.
Ao clicar numa captura instantânea, abre a página Detalhes da captura instantânea. Pode ver metadados adicionais acerca do instantâneo, bem como um link para a tarefa de origem e quaisquer instantâneos do Pub/Sub.
Elimine um instantâneo
A eliminação de um instantâneo é uma forma de parar o processo de instantâneo e retomar a tarefa. Além disso, a eliminação de instantâneos do Dataflow não elimina automaticamente os instantâneos do Pub/Sub associados.
Consola
gcloud
Elimine um instantâneo:
gcloud dataflow snapshots delete SNAPSHOT_ID \ --region=REGION
Substitua o seguinte:
Para mais informações, consulte a
delete
referência de comandos.
Crie uma tarefa a partir de um instantâneo
Depois de criar uma imagem instantânea, pode restaurar o estado da tarefa do Dataflow criando uma nova tarefa a partir dessa imagem instantânea.
Java
Para criar uma nova tarefa a partir de uma captura de ecrã, use os indicadores --createFromSnapshot
e --enableStreamingEngine
.
Python
As capturas instantâneas do Dataflow requerem o SDK do Apache Beam para Python, versão 2.29.0 ou posterior.
Para criar uma nova tarefa a partir de uma captura de ecrã, use os indicadores --createFromSnapshot
e --enableStreamingEngine
.
Aplicam-se as seguintes condições quando cria tarefas a partir de instantâneos do Dataflow:
Limitações conhecidas
Aplicam-se as seguintes limitações às cópias instantâneas do Dataflow:
Resolução de problemas
Esta secção fornece instruções para resolver problemas comuns encontrados quando interage com as capturas instantâneas do Dataflow.
Antes de contactar o apoio técnico, certifique-se de que excluiu problemas relacionados com as limitações conhecidas e nas seguintes secções de resolução de problemas.
O pedido de criação de uma captura de ecrã é rejeitado
Depois de ser enviado um pedido de criação de uma captura instantânea a partir da Google Cloud consola ou da CLI gcloud, o serviço Dataflow executa uma verificação de pré-condição e devolve quaisquer mensagens de erro. O pedido de criação de instantâneos pode ser rejeitado por vários motivos especificados nas mensagens de erro, por exemplo, se um tipo de tarefa não for suportado ou se uma região estiver indisponível.
Se o pedido for rejeitado porque a tarefa é demasiado antiga, tem de atualizar a tarefa antes de pedir um resumo.
Falha na criação do instantâneo
A criação de instantâneos pode falhar por vários motivos. Por exemplo, a tarefa de origem foi cancelada ou o projeto não tem as autorizações corretas para criar instantâneos do Pub/Sub. Os registos job-message da tarefa contêm mensagens de erro da criação do resumo. Se a criação da imagem instantânea falhar, a tarefa de origem é retomada.
Falha ao criar uma tarefa a partir do instantâneo
Quando cria uma tarefa a partir de um instantâneo, certifique-se de que o instantâneo existe e não expirou. A nova tarefa tem de ser executada no Streaming Engine.
Para problemas comuns de criação de tarefas, consulte o guia de resolução de problemas do Dataflow. Em particular, as novas tarefas criadas a partir de resumos estão sujeitas a uma verificação de compatibilidade de atualização em que a nova tarefa tem de ser compatível com a tarefa de origem resumida.
A tarefa criada a partir do instantâneo faz pouco progresso
Os registos job-message da tarefa contêm mensagens de erro para a criação de tarefas. Por exemplo, pode ver que a tarefa não consegue encontrar os instantâneos do Pub/Sub. Neste caso, verifique se as cópias instantâneas do Pub/Sub existem e não expiraram. As capturas instantâneas do Pub/Sub expiram assim que a mensagem mais antiga numa captura instantânea tiver mais de sete dias. Os instantâneos do Pub/Sub expirados podem ser removidos automaticamente pelo serviço Pub/Sub.
Para tarefas criadas a partir de instantâneos do Dataflow que incluem instantâneos de origem do Pub/Sub, a nova tarefa pode ter grandes atrasos do Pub/Sub para processar. O ajuste automático de streaming pode ajudar a nova tarefa a limpar o atraso mais rapidamente.
A tarefa de origem com instantâneo pode já estar num estado não saudável antes de o instantâneo ter sido tirado. Compreender por que motivo a tarefa de origem não está em bom estado pode ajudar a resolver problemas da nova tarefa. Para ver sugestões comuns de depuração de tarefas, consulte o guia de resolução de problemas do Dataflow.