Informações da etapa do job do Dataflow

Na interface de monitoramento do Dataflow, o painel Informações da etapa mostra informações sobre etapas individuais em um job. Uma etapa representa uma única transformação no pipeline. As transformações compostas contêm subetapas.

O painel Informações da etapa mostra as seguintes informações:

  • Métricas da etapa.
  • Informações sobre as coleções de entrada e saída da etapa.
  • Quais estágios correspondem a essa etapa.
  • Métricas de entrada secundária

Use o painel Informações da etapa para entender o desempenho do job em cada etapa e encontrar etapas que podem ser otimizadas.

Conferir informações da etapa

Para conferir informações da etapa, siga estas etapas:

  1. No Google Cloud console, acesse a página Dataflow > Jobs.

    Acessar "Jobs"

  2. Selecione um job.

  3. Clique na guia Gráfico do job para conferir o gráfico. O gráfico do job representa cada etapa no pipeline como uma caixa.

  4. Clique em uma etapa. As informações sobre a etapa aparecem no painel Informações da etapa.

  5. Para conferir as subetapas de uma transformação composta, clique na seta Expandir nó.

Métricas da etapa

O painel Informações da etapa mostra as seguintes métricas para a etapa.

Marca d'água e atraso do sistema

A marca d'água do sistema é o carimbo de data/hora mais recente para o qual todos os horários de eventos foram totalmente processados. O atraso da marca d'água do sistema é o tempo máximo que um item de dados aguardou o processamento.

Marca d'água e atraso dos dados

A marca d'água dos dados é o carimbo de data/hora que marca o tempo estimado de conclusão da entrada de dados para essa etapa. O atraso da marca d'água dos dados é a diferença entre o horário do evento de entrada mais recente e a marca d'água dos dados.

Tempo decorrido

O tempo decorrido é o tempo total aproximado gasto por todas as linhas de execução em todos os workers nas ações a seguir:

  • Inicialização da etapa
  • Processamento dos dados
  • Embaralhamento dos dados
  • Finalização da etapa

Para etapas compostas, o tempo decorrido é igual à soma do tempo gasto nas etapas do componente.

O tempo decorrido pode ajudar a identificar etapas lentas e diagnosticar qual parte do pipeline está demorando mais tempo do que o necessário.

Status do gargalo

Se o Dataflow detectar um gargalo, um alerta será mostrado, juntamente com a causa, se conhecida. Para mais informações, consulte Solução de problemas de gargalos.

Latência máxima da operação

A latência máxima da operação é o tempo máximo gasto nessa etapa para processar mensagens recebidas ou expirações de janelas. Essa métrica é medida de forma agregada em etapas combinadas em um único estágio. Portanto, o valor representa todo o estágio.

Paralelismo de chaves

O paralelismo de chaves é o número aproximado de chaves em uso para o processamento de dados nessa etapa.

Informações de janela

Para etapas de agregação em pipelines de streaming, o painel Informações da etapa mostra informações de janela derivadas da estratégia de janela da transformação ParDo do pipeline. Exemplo:

  • Função de janela:org.apache.beam.sdk.transforms.windowing.SlidingWindows
  • Período da janela:30 sec
  • Tamanho da janela:5 min
  • Deslocamento de início da janela:0 ms
  • Modo de acúmulo de janela:DISCARDING
  • Fator de amplificação de gravação de janela:10

Os campos de janela a seguir fornecem um contexto importante para o desempenho de streaming e o volume de dados:

  • Modo de acúmulo de janela:indica se o estado da janela é mantido em acionamentos de gatilho. Para mais informações, consulte Modos de acúmulo de janela na documentação do Apache Beam.
  • Fator de amplificação de gravação de janela:o número médio de janelas a que cada elemento de entrada é atribuído, calculado como Window Size / Window Period. Por exemplo, um tamanho de janela de 5 minutos (300 sec) com um período de slide de 30 segundos (30 sec) atribui cada elemento a 10 janelas sobrepostas (300 / 30 = 10), resultando em um fator de amplificação de gravação de 10. Um fator de amplificação maior que 1 multiplica o volume de elementos downstream, o tráfego de embaralhamento e o armazenamento de estado.

Coleções de entrada/saída

O painel Informações da etapa mostra as seguintes informações sobre cada uma das coleções de entrada e saída na etapa:

  • Gráfico de capacidade de processamento. Esse gráfico mostra a capacidade de processamento da coleção. É possível conferir o gráfico como elementos por segundo ou como bytes por segundo. Para mais informações sobre essa métrica, consulte Capacidade de processamento.

  • Contagem de elementos adicionados à coleção.

  • Tamanho estimado da coleção, em bytes.

Estágios otimizados

Um estágio representa uma única unidade de trabalho realizada pelo Dataflow. Quando você seleciona uma etapa no gráfico do job, o painel Informações da etapa mostra os nomes dos estágios que executam essa etapa, juntamente com o status atual, como em execução, interrompido ou concluído.

Para conferir mais informações sobre os estágios no job, use a guia Detalhes da execução.

Métricas de entrada secundária

Uma entrada secundária é uma entrada adicional que uma transformação pode acessar cada vez que processa um elemento. Se uma transformação criar ou consumir uma entrada secundária, o painel Informações secundárias mostrará as métricas da coleção de entrada secundária.

Se uma transformação composta criar ou consumir uma entrada secundária, expanda a transformação composta até que a subtransformação específica que cria ou consome a entrada secundária esteja visível. Selecione essa subtransformação para conferir as métricas de entrada secundária.

Transformações que criam uma entrada secundária

Se uma transformação criar uma coleção de entrada secundária, a seção Métricas de entrada secundária mostrará o nome da coleção, juntamente com as seguintes métricas:

  • Tempo gasto na gravação:o tempo gasto gravando a coleção de entrada secundária.
  • Bytes gravados: o número total de bytes gravados na coleção de entrada secundária.
  • Tempo de leitura da entrada secundária e bytes lidos: uma tabela que contém outras métricas para todas as transformações que consomem a coleção de entradas secundárias, chamadas de consumidores de entrada secundária.

A tabela Tempo de leitura da entrada secundária e bytes lidos exibe as seguintes informações para cada consumidor de entrada secundária:

  • Consumidor de entrada secundária: o nome da transformação do consumidor de entrada secundária.
  • Tempo gasto lendo: o tempo que esse consumidor gastou lendo a coleção de entrada secundária.
  • Bytes lidos:o número de bytes que esse consumidor leu da coleção de entrada secundária.

A imagem a seguir mostra as métricas de entrada secundária de uma transformação que cria uma coleção de entrada secundária:

Métricas de entrada secundária mostradas no painel "Informações da etapa"

O gráfico do job tem uma transformação composta expandida (MakeMapView). A subtransformação que cria a entrada secundária (CreateDataflowView) é selecionada, e as métricas de entrada secundária podem ser conferidas no painel Informações da etapa.

Transformações que consomem entradas secundárias

Se uma transformação consumir uma ou mais entradas secundárias, a seção Métricas de entrada secundária mostrará a tabela Tempo de leitura da entrada secundária e bytes lidos. Nesta tabela, as seguintes informações para cada coleção de entrada secundária são exibidas:

  • Coleção de entrada secundária:o nome da coleção de entrada secundária.
  • Tempo gasto na leitura: o tempo que a transformação gastou lendo a coleção de entrada secundária.
  • Bytes lidos:o número de bytes que a transformação leu da coleção de entrada secundária.

A imagem a seguir mostra as métricas de entrada secundária de uma transformação que lê uma coleção de entrada secundária.

Métricas de entrada secundária mostradas no painel "Informações da etapa"

A transformação JoinBothCollections faz leituras em uma coleção de entradas secundárias. JoinBothCollections é selecionada no gráfico do job, e as métricas de entrada secundária podem ser conferidas no painel Informações da etapa.

Identificar problemas de desempenho em entradas secundárias

As entradas secundárias podem afetar o desempenho do pipeline. Quando o pipeline usa uma entrada secundária, o Dataflow grava a coleção em uma camada permanente (como um disco) e as transformações são lidas nessa coleção permanente. Essas leituras e gravações afetam o tempo de execução do job.

A reiteração é um problema comum de desempenho da entrada secundária. Se a entrada secundária PCollection for muito grande, os workers não poderão armazenar em cache a coleção inteira na memória. Como resultado, os workers leem repetidamente a coleção de entrada secundária permanente.

Na imagem a seguir, as métricas de entrada secundária mostram que o total de bytes lidos da coleção de entrada secundária é muito maior que o tamanho da coleção, que é mostrado como o total de bytes gravados. A coleção de entradas secundárias é de 563 MB e a soma dos bytes lidos por transformações de consumo é de quase 12 GB.

Um exemplo de reiteração

Para melhorar o desempenho desse pipeline, recrie o algoritmo para evitar iterar ou refazer os dados de entrada secundária. Neste exemplo, o pipeline cria o produto cartesiano de duas coleções. O algoritmo itera toda a coleção de entrada secundária para cada elemento da coleção principal. Você pode melhorar o padrão de acesso do pipeline ao agrupar vários elementos da coleção principal. Essa alteração reduz o número de vezes que os workers releem a coleção de entrada secundária.

Outro problema comum de desempenho pode ocorrer se o pipeline executar uma mesclagem aplicando uma ParDo com uma ou mais entradas secundárias grandes. Nesse caso, os workers dedicam uma grande porcentagem do tempo de processamento para a operação de junção que leem as coleções de entrada secundárias.

A imagem a seguir mostra as métricas de entrada secundária para esse problema:

Exemplo de uma junção de entrada secundária cara

A transformação JoinBothCollections tem um tempo de processamento total de mais de 18 minutos. Os workers passam a maior parte do tempo de processamento (10 minutos) lendo a coleção de entrada secundária de 10 GB. Para melhorar o desempenho desse pipeline, use CoGroupByKey em vez de entradas secundárias.