Solicitar cotas

O serviço do Dataflow gerencia totalmente os recursos do Google Cloud por job. Isso inclui ativar e encerrar instâncias do Compute Engine, às vezes chamadas de workers ou VMs, e acessar buckets no Cloud Storage do projeto para E/S e preparo de arquivos temporários. No entanto, se o pipeline interagir com as tecnologias de armazenamento de dados do Google Cloud, como o BigQuery e o Pub/Sub, será necessário gerenciar os recursos e a cota desses serviços.

O Dataflow usa um local fornecido pelo usuário no Cloud Storage especificamente para o preparo de arquivos. Esse local está sob seu controle. É preciso garantir que o tempo de vida do local dure enquanto os jobs estiverem executando atividades de leitura nele. O mesmo local de preparação pode ser reutilizado em execuções de vários jobs, pois o armazenamento em cache integrado do SDK pode acelerar o horário de início dos jobs.

Jobs

É possível executar até 25 jobs simultâneos do Dataflow por projeto do Google Cloud. No entanto, esse limite pode ser aumentado entrando em contato com o suporte do Google Cloud. Para mais informações, consulte Cotas.

No momento, o serviço do Dataflow está limitado a processar solicitações de jobs JSON com 20 MB ou menos. O tamanho da solicitação de job está expressamente vinculado à representação JSON do pipeline. Um pipeline maior aceita solicitações maiores.

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

Java

--dataflowJobFile=<path to output file>

Python

--dataflow_job_file=<path to output file>

Go

No momento, não é possível estimar o tamanho do payload JSON de um job com um flag em Go.

Esse comando grava uma representação JSON do job em um arquivo. O tamanho do arquivo serializado é uma boa estimativa do tamanho da solicitação. O tamanho real é ligeiramente maior em função de algumas informações adicionais incluídas na solicitação.

Para mais informações, consulte a página de solução de problemas "413 Entidade de solicitação muito grande"/"O tamanho da representação JSON serializada do pipeline excede o limite permitido".

Além disso, o tamanho do gráfico do job precisa ter menos de 10 MB. Para mais informações, consulte a página de solução de problemas "O gráfico do job é muito grande. Tente novamente com um gráfico menor ou divida o job em dois ou mais jobs menores.".

Workers

No momento, o serviço do Dataflow comporta, no máximo, 1.000 instâncias do Compute Engine por job. Para jobs em lote, o tipo de máquina padrão é n1-standard-1. Para jobs de streaming, o tipo de máquina padrão para jobs commecanismo de streaming ativado é n1-standard-2 e o tipo de máquina padrão para jobs que não sejam de mecanismo de streaming é n1-standard-4. Portanto, quando você usa os tipos de máquina padrão, o serviço Dataflow aloca até 4.000 núcleos por job. Se você precisar de mais núcleos para o job, poderá selecionar um tipo de máquina maior.

Não tente gerenciar ou interagir diretamente com o grupo gerenciado de instâncias do Compute Engine. O serviço Dataflow cuida disso para você. Não há suporte para a alteração manual de recursos do Compute Engine associados ao job do Dataflow.

Você pode usar qualquer uma das famílias de tipos de máquina do Compute Engine disponíveis, bem como tipos de máquinas personalizadas. Para melhores resultados, use tipos de máquina n1. Os tipos de máquina com núcleo compartilhado, como workers da série f1 e g1, não recebem suporte de acordo com o Contrato de nível de serviço do Dataflow.

Para alocar memória adicional por linha de execução de worker, use um tipo de máquina personalizado com mais memória. 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 em uma máquina para determinar o número de linhas de execução de worker por VM de worker. Se o pipeline processa trabalhos intensivos de memória, um tipo de máquina personalizado com memória estendida pode fornecer mais memória por linha de execução de worker. Para mais informações, consulte Como criar uma instância de VM personalizada.

O Dataflow cobra pelo número de vCPUs e GB de memória nos workers. O faturamento não depende da família de tipos de máquinas. É possível especificar um tipo de máquina para o pipeline definindo o parâmetro de execução apropriado 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.

Cota de recursos

O serviço do Dataflow faz verificações para garantir que o projeto do Google Cloud tenha a cota de recursos do Compute Engine necessária para executar o job, tanto para iniciar quanto para escalonar o job para o número máximo de instâncias de worker. O job não será iniciado se não houver cota de recursos suficiente.

Se o job do Dataflow implantar máquinas virtuais do Compute Engine como um grupo gerenciado de instâncias, será preciso garantir que o projeto atenda a alguns requisitos de cota adicionais. Especificamente, o projeto precisa de um dos seguintes tipos de cota para cada job simultâneo do Dataflow a ser executado:

  • Um grupo de instâncias por job
  • Um grupo de instâncias gerenciadas por job
  • Um modelo de instância por job

Atenção: a alteração manual no modelo de instância ou no grupo gerenciado de instâncias do job do Dataflow não é recomendada ou compatível. Em vez disso, use as opções de configuração de pipeline do Dataflow.

O recurso de Escalonamento automático horizontal é limitado pela cota disponível do Compute Engine do projeto. Se o job tiver cota suficiente quando for iniciado e um outro job usar o restante da cota disponível do projeto, o primeiro job será executado, mas não será totalmente escalonado.

No entanto, o serviço Dataflow não gerencia aumentos de cota dos jobs que excedem as cotas de recursos do projeto. Todas as solicitações necessárias para a cota de recursos adicionais ficam sob a responsabilidade do usuário. Para realizar essa tarefa, é possível usar o console do Google Cloud.

Endereços IP

Por padrão, o Dataflow atribui endereços IP públicos e privados às VMs de worker. Um endereço IP público atende a um dos critérios de acesso à Internet, mas um endereço IP público também é contabilizado na cota de endereços IP externos.

Se as VMs de worker não precisarem de acesso à Internet pública, considere usar apenas endereços IP internos, que não são contabilizados na cota externa. Para mais informações sobre como configurar endereços IP, consulte os seguintes recursos:

Workers inativos

Se os workers de um determinado job não exibirem atividade suficiente em um período de uma hora, o job falhará. A inatividade dos workers pode resultar de problemas de gerenciamento de dependências. Por exemplo, se um worker encontrar um problema ao instalar dependências para uma imagem de contêiner personalizada, ele poderá não iniciar ou não conseguir progredir. A falta de progresso pode causar uma falha no job. Para saber mais, veja:

Recursos de disco permanente

O serviço do Dataflow está limitado a 15 discos permanentes por instância de worker na execução de um job de streaming. Cada disco permanente é local em relação a uma máquina virtual individual do Compute Engine. O job não pode ter mais workers do que discos permanentes. A proporção de 1:1 entre workers e discos é a cota mínima de recursos.

Os jobs que usam o Streaming Engine usam discos de inicialização de 30 GB. Os jobs que usam o Dataflow Shuffle usam discos de inicialização de 25 GB. Para jobs que não usam essas ofertas, o tamanho padrão de cada disco permanente é 250 GB no modo de lote e 400 GB no modo de streaming.

Locais

Por padrão, o serviço do Dataflow implanta recursos do Compute Engine na zona us-central1-f da região us-central1. Para modificar essa configuração, é necessário especificar o parâmetro --region. Se você precisar usar recursos em uma zona específica, utilize o parâmetro --zone ao criar o pipeline. No entanto, recomendamos especificar apenas a região e não definir a zona. Assim, o serviço do Dataflow seleciona automaticamente a melhor zona dentro da região, com base na capacidade disponível no momento da solicitação de criação do job. Para mais informações, consulte a documentação das regiões do Dataflow.