Lacunas entre Spark Trabalho

Então, o senhor vê lacunas em seu cronograma de trabalho, como as seguintes:

Job Lacunas

Há alguns motivos pelos quais isso pode estar acontecendo. Se as lacunas representarem uma grande proporção do tempo gasto com sua carga de trabalho, o senhor precisa descobrir o que está causando essas lacunas e se isso é esperado ou não. Há algumas coisas que podem estar acontecendo durante os intervalos:

  • Não há trabalho a fazer

  • O driver está compilando um plano de execução complexo

  • Execução de código sem faísca

  • O motorista está sobrecarregado

  • O cluster está com defeito

Nenhum trabalho

Na computação para todos os fins, não ter trabalho a fazer é a explicação mais provável para as lacunas. Como o cluster está em execução e os usuários estão enviando consultas, são esperadas lacunas. Essas lacunas são o tempo entre os envios de consultas.

Plano de execução complexo

Por exemplo, se o senhor usar withColumn() em um loop, isso criará um plano muito caro para processar. As lacunas podem ser o tempo que o motorista está gastando simplesmente construindo e processando o plano. Se esse for o caso, tente simplificar o código. Use selectExpr() para combinar várias chamadas withColumn() em uma única expressão ou converta o código em SQL. O senhor ainda pode incorporar o SQL em seu código Python, usando o Python para manipular a consulta com funções de cadeias de caracteres. Isso geralmente resolve esse tipo de problema.

Execução de código não Spark

Spark O código é escrito em SQL ou usando um Spark API como PySpark. Qualquer execução de código que não seja do Spark aparecerá na linha do tempo como lacunas. Por exemplo, o senhor pode ter um loop no Python que chama funções nativas do Python. Esse código não está sendo executado no Spark e pode aparecer como uma lacuna na linha do tempo. Se não tiver certeza de que seu código está sendo executado Spark, tente executá-lo interativamente em um Notebook. Se o código estiver usando Spark, o senhor verá Spark Job abaixo da célula:

Execução do Spark

O senhor também pode expandir o menu suspenso Spark Jobs sob a célula para ver se o trabalho está sendo executado ativamente (no caso de Spark estar parado). Se o senhor não estiver usando o Spark, não verá os Spark Jobs sob a célula ou verá que nenhum está ativo. Se não for possível executar o código de forma interativa, o senhor pode tentar registrar o código e ver se consegue fazer a correspondência entre as lacunas e as seções do código por registro de data e hora, mas isso pode ser complicado.

Se o senhor observar lacunas em sua linha do tempo causadas pela execução de código nãoSpark, isso significa que seu funcionário está parado e provavelmente desperdiçando dinheiro durante as lacunas. Talvez isso seja intencional e inevitável, mas se o senhor puder escrever esse código para usar o Spark, utilizará totalmente o cluster. Comece com este tutorial para aprender a trabalhar com Spark.

O motorista está sobrecarregado

Para determinar se o driver está sobrecarregado, o senhor precisa examinar as métricas do cluster.

Se o seu cluster estiver no DBR 13.0 ou posterior, clique em métricas, conforme destacado nesta captura de tela:

Novas métricas de cluster

Observe a visualização da distribuição da carga do servidor. O senhor deve verificar se o driver está muito carregado. Essa visualização tem um bloco de cores para cada máquina no cluster. Vermelho significa muito carregado e azul significa nada carregado.

A captura de tela anterior mostra basicamente um parado cluster. Se o driver estiver sobrecarregado, ele terá a seguinte aparência:

Novas métricas, motorista ocupado

Podemos ver que um quadrado é vermelho, enquanto os outros são azuis. Passe o mouse sobre o quadrado vermelho para ter certeza de que o bloco vermelho representa o seu motorista.

Para corrigir um driver sobrecarregado, consulte Spark driver overloaded.

Visualizar a distribuição com métricas herdadas do Ganglia

Se o seu cluster estiver no DBR 12.x ou anterior, clique em métricas e em Ganglia UI, conforme destacado nesta captura de tela:

Gânglios abertos

Se o site cluster não estiver mais em execução, o senhor poderá abrir um dos Snapshots históricos. Observe a visualização da distribuição da carga do servidor, que está destacada em vermelho aqui:

Distribuição da carga do servidor em Ganglia

O senhor deve verificar se o driver está muito carregado. Essa visualização tem um bloco de cores para cada máquina no cluster. Vermelho significa muito carregado e azul significa nada carregado. A distribuição acima mostra uma distribuição basicamente parada cluster. Se o driver estiver sobrecarregado, ele terá a seguinte aparência:

Driver sobrecarregado nos gânglios

Podemos ver que um quadrado é vermelho, enquanto os outros são azuis. Tenha cuidado se o senhor tiver apenas um worker. O senhor precisa ter certeza de que o bloco vermelho é o driver e não o worker.

Para corrigir um driver sobrecarregado, consulte Spark driver overloaded.

O cluster está com defeito

O mau funcionamento do site clusters é raro, mas, se esse for o caso, pode ser difícil determinar o que aconteceu. Talvez o senhor queira apenas reiniciar o cluster para ver se isso resolve o problema. O senhor também pode consultar o site logs para verificar se há algo suspeito. As guias Event log tab e Driver logs, destacadas na captura de tela abaixo, são os locais onde o senhor deve procurar:

Obtendo o driver logs

Talvez o senhor queira ativar a entregacluster log para acessar o logs do trabalhador. O senhor também pode alterar o nível log, mas talvez seja necessário entrar em contato com a equipe Databricks account para obter ajuda.