Os atrasos são itens de trabalho que atrasam as suas tarefas do Dataflow, impedindo que o trabalho seja feito em paralelo.
Para pipelines em lote, um elemento atrasado é definido como um item de trabalho com as seguintes características:
- Demora significativamente mais tempo a concluir do que outros itens de trabalho na mesma fase.
- Reduz o paralelismo na fase.
- Impede o início de novo trabalho.
No pior dos casos, um elemento atrasado impede a conclusão de uma fase porque uma pequena percentagem do trabalho está em curso, o que causa atrasos gerais num trabalho.
O Dataflow deteta valores atípicos que ocorrem durante tarefas em lote. Se o Dataflow detetar um valor atípico, também tenta determinar a causa do valor atípico.
Veja os atrasos na Google Cloud consola
Depois de iniciar uma tarefa do Dataflow, pode usar a Google Cloud consola para ver os atrasos detetados.
Pode ver os atrasos por fase ou por trabalhador. Use estas vistas para descobrir que fases têm atrasos e, em seguida, identifique os trabalhadores onde ocorreram atrasos em cada fase.
Veja os atrasos por fase
Para ver os atrasos por etapa:
Na Google Cloud consola, aceda à página Tarefas do Dataflow.
Aceda a Tarefas
Clique no nome da tarefa.
Na página de detalhes da tarefa, clique no separador Detalhes da execução.
Na lista Vista de gráfico, selecione Progresso da fase. O gráfico de progresso mostra as contagens agregadas de todos os atrasados detetados em cada fase.
Para ver os detalhes de uma fase, mantenha o ponteiro sobre a barra de uma fase. Para ver os trabalhadores da fase, clique em Ver trabalhadores no painel de detalhes.
Veja os atrasos por trabalhador
Para ver os participantes atrasados por trabalhador:
Na Google Cloud consola, aceda à página Tarefas do Dataflow.
Aceda a Tarefas
Clique no nome da tarefa.
Na página de detalhes da tarefa, clique no separador Detalhes da execução.
Na lista Vista de gráfico, selecione Progresso do trabalhador.
Na lista Filtrar trabalhadores por fase, selecione a fase. O gráfico de progresso mostra os atrasos detetados para essa fase. A barra tem um sombreado mais escuro no ponto em que o intruso foi detetado pela primeira vez.
Para ver os detalhes de um trabalhador, mantenha o ponteiro sobre a barra desse trabalhador.
No painel Informações da fase, a secção Detalhes dos atrasados apresenta os atrasados de todos os trabalhadores apresentados na página, com as seguintes informações:
- A hora de início em que o valor atípico foi detetado.
- O trabalhador que encontrou o objeto perdido.
- A causa, se for conhecida.
Resolva problemas de atrasos nos lotes
O Dataflow deteta as seguintes causas de atrasos em pipelines de processamento em lote:
Tecla de atalho. Uma tecla de atalho é uma tecla que representa significativamente mais elementos do que outras teclas no mesmo
PCollection
. Para mais informações, consulte o artigo Resolva problemas de atrasos causados por teclas de atalho neste documento.Slow Worker. Num trabalhador lento, os itens de trabalho são executados mais lentamente do que o habitual. Muitas vezes, a velocidade de processamento de um trabalhador lento é inferior à velocidade de processamento de trabalhadores que fazem um trabalho semelhante na mesma fase. Existem vários fatores que podem causar lentidão no worker, incluindo falta de CPU, thrashing, arquitetura da máquina e processos do worker bloqueados. Quando ocorre lentidão, o Dataflow tenta mitigar o problema automaticamente. Para mais informações, consulte o artigo Mitigue automaticamente os atrasos causados por trabalhadores lentos neste documento.
Causa indeterminada. Para tarefas pendentes com causa indeterminada, consulte os passos gerais de resolução de problemas para tarefas em lote lentas em "Resolva problemas de tarefas lentas ou bloqueadas".
Resolva problemas de atrasos causados por teclas de atalho
Vários fatores podem causar atrasos, mas uma causa comum é a existência de uma tecla de atalho. Uma tecla de atalho é uma tecla que representa significativamente mais elementos do que outras teclas no mesmo PCollection
. As teclas frequentes podem criar valores atípicos porque limitam a capacidade do Dataflow de processar elementos em paralelo.
Se o Dataflow detetar um valor atípico causado por uma tecla de atalho, o painel Detalhes do valor atípico indica Hot Key
como a causa.
Por predefinição, o Dataflow não apresenta o valor da tecla de atalho. Para apresentar o valor da chave, defina a opção de pipeline hotKeyLoggingEnabled
como true
quando executar a tarefa.
Para resolver este problema, verifique se os dados estão distribuídos uniformemente. Se uma chave tiver um número desproporcionado de valores, considere as seguintes ações:
- Volte a introduzir a chave dos seus dados. Aplique uma transformação
ParDo
para gerar novos pares chave-valor. - Para tarefas Java, use a transformação
Combine.PerKey.withHotKeyFanout
. - Para tarefas Python, use a função
CombinePerKey.with_hot_key_fanout
transform. - Ative o Dataflow Shuffle.
Por exemplo, se um pipeline realizar uma operação JOIN
como parte de uma transformação SQL, é provável que uma determinada chave contenha uma quantidade desproporcionada de dados quando for introduzida na operação GroupByKey
que é realizada como parte da operação JOIN
expandida.
Para mais informações, consulte o seguinte pedido de funcionalidade: beam-issue/28186.
Mitigue automaticamente os atrasos causados por trabalhadores lentos
Os trabalhadores lentos são invulgares no Dataflow, mas podem afetar o desempenho das tarefas. Para evitar problemas de desempenho, quando o Dataflow deteta trabalhadores lentos, tenta mitigar o problema antes que os trabalhadores causem atrasos.
A mitigação automática simula um evento de manutenção do anfitrião. O evento é um mecanismo de manutenção do Compute Engine que ocorre regularmente. Consoante a política de manutenção do anfitrião do trabalhador, o trabalhador é migrado em direto ou reiniciado. Se ocorrer uma migração em direto, a carga de trabalho não é interrompida. Se o trabalhador for reiniciado, o trabalho em curso do trabalhador lento é perdido e o processamento é reiniciado.
Se for detetado um processo lento e o problema for resolvido com êxito, é apresentada a seguinte mensagem nos registos job-message:
Slow worker ... detected and automatically remediated ...
Uma vez que os trabalhadores lentos não são atrasados, não tem de fazer nada.
Se a mitigação não for bem-sucedida, o worker lento causa um atraso que é apresentado na interface de monitorização do Dataflow.
A mitigação automática pode falhar se o seu projeto ficar sem quota para pedidos de eventos de manutenção simulados de instâncias. Para mais informações acerca da quota predefinida, consulte Limites de taxa da API para métricas regionais em "Quotas de utilização de recursos e gestão de autorizações". Para pedir um limite de quota mais elevado, consulte o artigo Pedir um ajuste de quota em "Ver e gerir quotas".
O que se segue?
- Saiba como usar a interface de monitorização do Dataflow.
- Compreenda o separador Detalhes da execução na interface de monitorização.