Stragglers são itens de trabalho que atrasam os jobs do Dataflow ao impedir a execução de trabalhos em paralelo.
Para pipelines em lote, um retardatário é definido como 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.
Ver retardatários no console do Google Cloud
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 os detalhes de um cenário, mantenha o ponteiro do mouse sobre a barra de um estágio. 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 estágio.
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, segure o ponteiro do mouse sobre a barra desse worker.
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.
- O trabalhador que experimentou o retardatário.
- A causa, se conhecida.
Resolver problemas com retardadores de lote
O Dataflow detecta as seguintes causas de atrasos nos pipelines em lote:
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.Worker lento. Em um worker lento, os itens de trabalho são executados mais lentamente do que o normal. Muitas vezes, a velocidade de processamento de um worker lento é menor que a velocidade de processamento dos workers que fazem um trabalho semelhante no mesmo estágio. Muitos fatores podem causar lentidão no worker, incluindo privação de CPU, sobrecarga, arquitetura da máquina e processos de worker travados. Quando há lentidão, o Dataflow tenta mitigar o problema automaticamente. Para mais informações, consulte Diminuir os retardatários automáticos causados por workers lentos neste documento.
Causa indeterminada. Para stragglers com causa indeterminada, consulte as etapas gerais de solução de problemas para jobs em lote lentos em "Resolver problemas de jobs lentos ou travados".
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
para gerar novos pares de chave-valor. - No caso de jobs em Java, use a transformação transformação
Combine.PerKey.withHotKeyFanout
. - Para jobs em Python, use a transformação
CombinePerKey.with_hot_key_fanout
. - Ative o Dataflow Shuffle.
Por exemplo, se um pipeline executar uma operação JOIN
como parte de uma transformação
SQL, é provável que uma determinada chave contenha uma quantidade desproporcional de
dados quando for alimentada ao GroupByKey
que é realizada como parte da
operação JOIN
expandida.
Para mais informações, consulte a seguinte solicitação de recurso: beam-issue/28186.
Reduz automaticamente os retardatários causados por workers lentos
Os workers lentos são incomuns no Dataflow, mas podem afetar o desempenho do job. Para evitar problemas de desempenho, quando o Dataflow detecta workers lentos, ele tenta mitigar o problema antes que os workers causem lentidão.
A mitigação automática simula um evento de manutenção do host. O evento é um mecanismo de manutenção do Compute Engine que ocorre regularmente. Dependendo da política de manutenção do host do worker, ele é migrado em tempo real ou reiniciado. Se ocorrer uma migração em tempo real, a carga de trabalho não será interrompida. Se o worker for reiniciado, o trabalho em andamento do worker lento será perdido e o processamento será reiniciado.
Se um worker lento for detectado e reduzido, a seguinte mensagem será exibida nos registros job-message:
Slow worker ... detected and automatically remediated ...
Como os workers lentos não são retardatários, não é necessário realizar outras ações.
Se a mitigação não for bem-sucedida, o worker lento fará com que um retardatário seja exibido na interface de monitoramento do Dataflow.
A mitigação automática poderá falhar se o projeto ficar sem cota para solicitações de evento de manutenção simulado de instâncias. Para mais informações sobre a cota padrão, consulte Limites de taxa de API para métricas regionais em "Cotas de uso de recursos e gerenciamento de permissões". Para solicitar um limite de cota maior, consulte Solicitar um limite de cota maior em "Visualizar e gerenciar cotas".
A seguir
- Saiba como usar a interface de monitoramento do Dataflow.
- Entenda a guia Detalhes da execução na interface de monitoramento.