Pular para o conteúdo principal

Spark motorista sobrecarregado

O nó do driver coordena todo o trabalho em um cluster. Ele interpreta todos os comandos, planeja cada query e programa tarefas nos executores. Quando o Driver está sobrecarregado, ele não consegue distribuir o trabalho com rapidez suficiente, então os executores ficam parados enquanto você ainda paga por eles. Isso geralmente aparece como longas lacunas na linha do tempo dos jobs e um cluster lento ou não responsivo, mesmo que os workers não estejam ocupados.

Use esta página após verificar se o driver está fortemente carregado nas métricas do cluster enquanto os workers não estão. Para verificar isso, consulte O driver está sobrecarregado. Se o driver não estiver fortemente carregado, as lacunas têm uma causa diferente. Reveja as outras causas em Lacunas entre os jobs do Spark e use as outras páginas deste guia para diagnosticar o problema. Consulte Diagnosticar problemas de custos e desempenho usando a Spark UI.

Causas comuns​

O driver geralmente está sobrecarregado por um desses motivos:

  • Muitas operações concorrentes. Too many Streams, queries, ou Spark Jobs estão em execução no cluster ao mesmo tempo. Por exemplo, algumas cargas de trabalho usam threads para a execução de muitos Jobs do Spark simultaneamente. Esta é a causa mais comum.
  • Código não Spark. O código que não usa Spark, como um loop Python que chama funções Python nativas, está em execução no Driver e mantém o Driver ocupado enquanto os workers ficam parados. Para verificar se o seu código é executado no Spark, consulte Execução de código não Spark.
  • Muitos notebooks anexados. O driver mantém as informações de estado de cada notebook anexado ao cluster. Muitos notebooks anexados aumentam a carga no driver, mesmo quando não estão executando comandos.

Corrigir um driver sobrecarregado​

Para reduzir a carga no driver, tente estas abordagens:

  • Aumente o tamanho do driver. O tipo de nó do Driver default é o mesmo que o tipo de nó do worker. Selecione um tipo de Driver maior na seção Desempenho avançado da configuração de compute. A Databricks recomenda começar dobrando o tamanho do driver e verificando como isso afeta o job. Consulte Tipo de driver.

  • Reduza a simultaneidade. Se muitas operações estiverem em execução ao mesmo tempo, execute menos Stream, queries ou Jobs Spark com threads no cluster.

  • Distribua a carga em vários clusters. Mova algumas das cargas de trabalho concorrentes para um compute separado para que cada Driver coordene menos trabalho.

  • Mova códigos que não são Spark. Se o driver estiver ocupado executando códigos que não são Spark, um driver maior não ajudará os workers parados. Reescreva o código para usar o Spark ou execute-o em Serverless compute, onde você não paga pelo tempo parado. Para reescrever o código:

  • Desanexe notebooks não utilizados. Desanexe notebooks que você não está usando do cluster para reduzir o estado mantido pelo driver.