Quotas de pedidos

O serviço Dataflow gere totalmente os recursos Google Cloud com base em cada tarefa. Isto inclui iniciar e encerrar instâncias do Compute Engine (por vezes, denominadas workers ou VMs) e aceder aos contentores do Cloud Storage do seu projeto para E/S e preparação de ficheiros temporários. No entanto, se o seu pipeline interagir com tecnologias de armazenamento de dados, como o BigQuery e o Pub/Sub, tem de gerir os recursos e a quota desses serviços. Google Cloud

O Dataflow usa uma localização fornecida pelo utilizador no Cloud Storage especificamente para ficheiros de preparação. Esta localização está sob o seu controlo e deve garantir que a duração da localização é mantida enquanto qualquer tarefa estiver a ler a partir dela. Pode reutilizar a mesma localização de preparação para várias execuções de tarefas, uma vez que o armazenamento em cache incorporado do SDK pode acelerar o tempo de início das suas tarefas.

Empregos

Pode executar até 25 tarefas do Dataflow em simultâneo por Google Cloud projeto. No entanto, este limite pode ser aumentado se contactar o apoio técnico da Google Cloud Platform. Para mais informações, consulte Quotas.

Atualmente, o serviço Dataflow está limitado ao processamento de pedidos de tarefas JSON com um tamanho de 20 MB ou inferior. O tamanho do pedido de tarefa está especificamente associado à representação JSON do seu pipeline. Um pipeline maior significa um pedido maior.

Para estimar o tamanho do pedido JSON do seu pipeline, execute-o com a seguinte opção:

Java

--dataflowJobFile=<path to output file>

Python

--dataflow_job_file=<path to output file>

Go

Atualmente, a estimativa do tamanho da carga útil JSON de uma tarefa com uma flag não é suportada em Go.

Este comando escreve uma representação JSON da sua tarefa num ficheiro. O tamanho do ficheiro serializado é uma boa estimativa do tamanho do pedido. O tamanho real é ligeiramente superior devido a algumas informações adicionais incluídas no pedido.

Para mais informações, consulte a página de resolução de problemas para "413 Request Entity Too Large" / "O tamanho da representação JSON serializada do pipeline excede o limite permitido".

Além disso, o tamanho do gráfico da tarefa não pode exceder 10 MB. Para mais informações, consulte a página de resolução de problemas para "O gráfico de tarefas é demasiado grande. Tente novamente com um gráfico de tarefas mais pequeno ou divida a tarefa em duas ou mais tarefas mais pequenas.".

Trabalhadores

Atualmente, o serviço Dataflow permite um máximo de 1000 instâncias do Compute Engine por tarefa. Para tarefas em lote, o tipo de máquina predefinido é n1-standard-1. Para tarefas de streaming, o tipo de máquina predefinido para tarefas ativadas para o Streaming Engine é n1-standard-2 e o tipo de máquina predefinido para tarefas não ativadas para o Streaming Engine é n1-standard-4. Por conseguinte, quando usa os tipos de máquinas predefinidos, o serviço Dataflow pode atribuir até 4000 núcleos por tarefa. Se precisar de mais núcleos para o seu trabalho, pode selecionar um tipo de máquina maior.

Não deve tentar gerir nem interagir diretamente com o seu grupo de instâncias geridas do Compute Engine. O serviço Dataflow encarrega-se disso por si. Alterar manualmente os recursos do Compute Engine associados à sua tarefa do Dataflow é uma operação não suportada.

Também pode usar qualquer uma das famílias de tipos de máquinas do Compute Engine disponíveis, bem como tipos de máquinas personalizados. Para obter os melhores resultados, use n1 tipos de máquinas. Os tipos de máquinas principais partilhados, como os trabalhadores das séries f1 e g1, não são suportados ao abrigo do contrato de nível de serviço do Dataflow.

Para atribuir memória adicional por thread de trabalho, use um tipo de máquina personalizado com memória expandida. Por exemplo, custom-2-15360-ext é um tipo de máquina n1 com 2 CPUs e 15 GB de memória. O Dataflow considera o número de CPUs numa máquina para determinar o número de threads de trabalho por VM de trabalho. Se o seu pipeline processar trabalho com utilização intensiva de memória, um tipo de máquina personalizado com memória expandida pode dar mais memória por thread de trabalho. Para mais informações, consulte o artigo Criar uma instância de VM personalizada.

O Dataflow fatura com base no número de vCPUs e GB de memória nos trabalhadores. A faturação é independente da família de tipos de máquinas. Pode especificar um tipo de máquina para o seu pipeline definindo o parâmetro de execução adequado no momento da criação do pipeline.

Java

Para alterar o tipo de máquina, defina a opção --workerMachineType.

Python

Para alterar o tipo de máquina, defina a opção --worker_machine_type.

Go

Para alterar o tipo de máquina, defina a opção ‑‑worker_machine_type.

Quota de recursos

O serviço Dataflow verifica se o seu projeto tem a quota de recursos do Compute Engine necessária para executar a tarefa, tanto para iniciar a tarefa como para dimensionar até ao número máximo de instâncias de trabalho. Google CloudA tarefa não é iniciada se não houver quota de recursos suficiente disponível.

Se a tarefa do Dataflow implementar máquinas virtuais do Compute Engine como um grupo de instâncias gerido, tem de garantir que o seu projeto cumpre alguns requisitos de quota adicionais. Especificamente, o seu projeto precisa de um dos seguintes tipos de quota para cada tarefa do Dataflow simultânea que quer executar:

  • Um grupo de instâncias por tarefa
  • Um grupo de instâncias geridas por tarefa
  • Um modelo de instância por tarefa

Aviso: alterar manualmente o modelo de instância ou o grupo de instâncias gerido da tarefa do Dataflow não é recomendado nem suportado. Em alternativa, use as opções de configuração do pipeline do Dataflow.

A funcionalidade de escala automática horizontal do Dataflow está limitada pela quota do Compute Engine disponível no seu projeto. Se a sua tarefa tiver quota suficiente quando é iniciada, mas outra tarefa usar o restante da quota disponível do seu projeto, a primeira tarefa é executada, mas não consegue ser totalmente dimensionada.

No entanto, o serviço Dataflow não gere aumentos de quotas para tarefas que excedam as quotas de recursos no seu projeto. É responsável por fazer todos os pedidos necessários de quota de recursos adicional, para os quais pode usar a Google Cloud consola.

Endereços IP

Por predefinição, o Dataflow atribui endereços IP públicos e privados às VMs de trabalho. Um endereço IP público cumpre um dos critérios de acesso à Internet, mas um endereço IP público também conta para a sua quota de endereços IP externos.

Se as VMs de trabalho não precisarem de acesso à Internet pública, considere usar apenas endereços IP internos, que não contam para a sua quota externa. Para mais informações sobre a configuração de endereços IP, consulte os seguintes recursos:

Trabalhadores inativos

Se os trabalhadores de uma determinada tarefa não apresentarem atividade suficiente durante um período de 1 hora, a tarefa falha. A inatividade do trabalhador pode resultar de problemas de gestão de dependências. Por exemplo, se um trabalhador encontrar um problema ao instalar dependências para uma imagem de contentor personalizada, o trabalhador pode não conseguir iniciar ou não conseguir progredir. A falta de progresso pode fazer com que a tarefa falhe. Para saber mais, consulte:

Recursos de discos persistentes

O serviço Dataflow está limitado a 15 discos persistentes por instância de worker quando executa uma tarefa de streaming. Cada disco persistente é local para uma máquina virtual do Compute Engine individual. A sua tarefa não pode ter mais trabalhadores do que discos persistentes. A atribuição mínima de recursos é uma relação de 1:1 entre trabalhadores e discos.

As tarefas que usam o Streaming Engine usam discos de arranque de 30 GB. Os trabalhos que usam o Dataflow Shuffle usam discos de arranque de 25 GB. Para tarefas que não usam estas ofertas, o tamanho predefinido de cada disco persistente é de 250 GB no modo de lote e 400 GB no modo de streaming.

Localizações

Por predefinição, o serviço Dataflow implementa recursos do Compute Engine na zona us-central1-f da região us-central1. Pode substituir esta definição especificando o parâmetro --region. Se precisar de usar uma zona específica para os seus recursos, use o parâmetro --zone quando criar o pipeline. No entanto, recomendamos que especifique apenas a região e deixe a zona não especificada. Isto permite que o serviço Dataflow selecione automaticamente a melhor zona na região com base na capacidade da zona disponível no momento do pedido de criação da tarefa. Para mais informações, consulte a documentação sobre as regiões do Dataflow.