Stragglers são itens de trabalho que atrasam os jobs do Dataflow ao impedir a execução de trabalhos em paralelo.
Um straggler é um item de trabalho com as seguintes características:
- Demora significativamente mais para ser concluído do que outros itens de trabalho no mesmo estágio.
- Reduz o paralelismo no estágio.
- Bloqueia a inicialização de novos trabalhos.
Na pior das hipóteses, um straggler bloqueia a conclusão de um estágio, porque uma pequena porcentagem do trabalho fica em andamento, causando atrasos gerais em um job.
O Dataflow detecta stragglers que ocorrem durante jobs em lote. Se o Dataflow detectar um straggler, ele também tentará determinar a causa do straggler.
Visualizar stragglers na interface de monitoramento do Dataflow
Depois de iniciar um job do Dataflow, você pode usar o console do Google Cloud para visualizar os stragglers detectados.
É possível visualizar os stragglers por estágio ou por worker. Use essas visualizações para descobrir quais estágios têm stragglers e, em seguida, identifique os workers em que ocorreram esses stragglers em cada estágio.
Visualizar stragglers por estágio
Para visualizar os stragglers por estágio:
No console do Google Cloud, acesse a página Jobs do Dataflow.
Acesse Jobs
Clique no nome do job.
Na página de detalhes do job, clique na guia Detalhes da execução.
Na lista Visualização de gráfico, selecione Progresso do estágio. O gráfico de progresso mostra contagens agregadas de todos os stragglers detectados em cada estágio.
Para ver detalhes de um estágio, passe o cursor sobre a barra dele. Para ver os workers do estágio, clique em Visualizar workers no painel de detalhes.
Visualizar stragglers por worker
Para visualizar os stragglers por worker:
No console do Google Cloud, acesse a página Jobs do Dataflow.
Acesse Jobs
Clique no nome do job.
Na página de detalhes do job, clique na guia Detalhes da execução.
Na lista Visualização de gráfico, selecione Progresso do worker.
Na lista Filtrar workers por estágio, selecione o estágio. O gráfico de progresso mostra todos os stragglers detectados para esse estágio. A barra mostra sombreamento mais escuro no ponto em que o straggler foi detectado pela primeira vez.
Para ver os detalhes de um worker, passe o cursor sobre a barra dele.
No painel Informações do estágio, a seção Detalhes do straggler lista os stragglers para todos os workers mostrados na página, com as seguintes informações:
- O horário de início em que o straggler foi detectado.
- Worker que sofreu o atraso.
- A causa, se conhecida.
Resolver problemas com stragglers
O Dataflow detecta as seguintes causas de stragglers:
Chave de atalho. Uma chave de atalho é uma chave que representa significativamente mais elementos do que outras chaves na mesma
PCollection
. Para mais informações, consulte Resolver problemas de stragglers causados por chaves de atalho, neste documento.Causa indeterminada. Para stragglers com causa indeterminada, consulte as etapas gerais de solução de problemas para jobs em lote lentos, no documento Solução de problemas e depuração de pipelines.
Resolver problemas de stragglers causados por chaves de atalho
Vários fatores podem causar stragglers, mas uma causa comum é a existência de uma
chave de atalho. Uma chave de atalho é uma chave que representa significativamente mais elementos do que
outras chaves na mesma PCollection
. As chaves de atalho podem criar stragglers porque
limitam a capacidade do Dataflow de processar elementos em paralelo.
Se o Dataflow detectar um straggler causado por uma chave de atalho, o painel
Detalhes do straggler lista Hot Key
como a causa.
Por padrão, o Dataflow não exibe o valor da chave
de atalho. Para exibir o valor da chave, defina a
opção de pipeline hotKeyLoggingEnabled
como true
ao executar o job.
Para resolver esse problema, verifique se seus dados estão distribuídos de maneira uniforme. Se uma chave tiver muitos valores de forma desproporcional, realize uma das ações a seguir:
- Faça o rechaveamento dos dados. Aplique uma transformação
ParDo
(em inglês) para gerar novos pares de chave-valor. - No caso de jobs em Java, use a transformação
Combine.PerKey.withHotKeyFanout
(em inglês). - Para jobs em Python, use a transformação
CombinePerKey.with_hot_key_fanout
(em inglês). - Ative o Dataflow Shuffle.
A seguir
- Saiba como usar a interface de monitoramento do Dataflow.
- Entenda a guia Detalhes da execução na interface de monitoramento.