Usar o Dataflow Shuffle para jobs em lote

O Dataflow Shuffle é a operação básica por trás das transformações do Dataflow, como GroupByKey, CoGroupByKey e Combine. A operação do Dataflow Shuffle particiona e agrupa os dados por chave, de maneira escalonável, eficiente e tolerante a falhas. O recurso Dataflow Shuffle, disponível somente para pipelines em lote, tira a operação de embaralhamento das VMs de worker e a coloca no back-end do serviço Dataflow.

Os jobs em lote usam o Dataflow Shuffle por padrão.

Benefícios do Dataflow Shuffle

O Dataflow Shuffle baseado em serviços oferece os seguintes benefícios:

  • Tempo de execução mais rápido em pipelines em lote para a maioria dos tipos de jobs de pipeline.
  • Redução no consumo dos recursos de CPU, memória e armazenamento em disco permanente nas VMs de worker.
  • Melhor escalonamento automático horizontal porque as VMs não armazenam dados de embaralhamento e, portanto, podem ser reduzidas mais cedo.
  • Melhor tolerância a falhas. Uma VM não íntegra que detiver dados do Dataflow Shuffle não vai causar falha em todo o job, como aconteceria se o recurso não estivesse sendo usado.

A maior parte da redução nos recursos do worker é motivada pela transferência do trabalho de embaralhamento para o serviço Dataflow. Por isso, há uma cobrança associada ao uso do Dataflow Shuffle. No entanto, os tempos de execução podem variar. Se você estiver executando um pipeline com prazos importantes, recomendamos alocar tempo de buffer suficiente antes do prazo final.

Usar o Dataflow Shuffle

Esse recurso está disponível em todas as regiões em que o Dataflow é compatível. Para ver os territórios disponíveis, consulte Locais do Dataflow. Se você usar o Dataflow Shuffle, os workers precisarão ser implantados na mesma região que o job do Dataflow.

Java

Ao utilizar o Dataflow Shuffle no pipeline, não especifique as opções zone. Em vez disso, especifique region e defina o valor como uma das regiões disponíveis. O Dataflow selecionará automaticamente a zona na região especificada. Se você especificar a opção de pipeline zone e defini-la como uma zona fora das regiões disponíveis, o Dataflow vai informar um erro. Se você definir uma combinação incompatível entre region e zone, o job não vai poder usar o Dataflow Shuffle.

Python

Ao utilizar o Dataflow Shuffle no pipeline, não especifique as opções zone. Em vez disso, especifique region e defina o valor como uma das regiões disponíveis. O Dataflow selecionará automaticamente a zona na região especificada. Se você especificar a opção de pipeline zone e defini-la como uma zona fora das regiões disponíveis, o Dataflow vai informar um erro. Se você definir uma combinação incompatível entre region e zone, o job não vai poder usar o Dataflow Shuffle.

Go

Ao utilizar o Dataflow Shuffle no pipeline, não especifique as opções zone. Em vez disso, especifique region e defina o valor como uma das regiões disponíveis. O Dataflow selecionará automaticamente a zona na região especificada. Se você especificar a opção de pipeline zone e defini-la como uma zona fora das regiões disponíveis, o Dataflow vai informar um erro. Se você definir uma combinação incompatível entre region e zone, o job não vai poder usar o Dataflow Shuffle.

O tamanho padrão do disco de inicialização para cada job em lote é de 25 GB. Em alguns jobs em lote, talvez seja necessário modificar o tamanho do disco. Considere o seguinte:

  • Uma VM de worker usa parte dos 25 GB de espaço em disco para o sistema operacional, binários, registros e contêineres. Quando você usa o Dataflow Shuffle, os jobs que usam uma quantidade significativa de disco e excedem a capacidade restante podem falhar.
  • Os jobs que usam muita E/S de disco podem ser lentos devido ao desempenho do disco pequeno. Para mais informações sobre as diferenças de desempenho entre tamanhos de disco, consulte Desempenho do Persistent Disk no Compute Engine.

Para especificar um tamanho de disco maior para um job do Dataflow Shuffle, use o parâmetro --disk_size_gb.