Dataflow Shuffle para jobs em lote

Os jobs em lote usam o Dataflow Shuffle por padrão. O Dataflow Shuffle move a operação de embaralhamento das VMs de worker para o back-end do serviço do Dataflow.

Sobre o Dataflow Shuffle

  • O Dataflow Shuffle é a operação básica por trás das transformações do Dataflow, como GroupByKey, CoGroupByKey e Combine.
  • Essa operação particiona e agrupa os dados por chave de maneira escalonável, eficiente e tolerante a falhas.

Benefícios do Dataflow Shuffle

O Dataflow Shuffle baseado em serviços oferece estes 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, porque uma VM não íntegra com dados do Dataflow Shuffle não causa falha em todo o job.

Suporte e limitações

  • O Dataflow Shuffle não está disponível para jobs de streaming.
  • 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. Pode haver diferenças de performance entre as regiões.
  • Os workers precisam ser implantados na mesma região que o job do Dataflow.
  • Não especifique a opção de pipeline zone. Em vez disso, especifique region e defina o valor como uma das regiões disponíveis. O Dataflow vai 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 job do Dataflow vai retornar um erro. Se você definir uma combinação incompatível entre region e zone, o job não vai poder usar o Dataflow Shuffle.

  • Para Python, o Dataflow Shuffle exige o SDK do Apache Beam para Python versão 2.1.0 ou posterior.

Considerações sobre o tamanho do disco

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.

Preços

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.