Use os recursos estendidos do Apache Spark History Server para depurar e diagnosticar aplicativos Spark
Este artigo mostra como usar os recursos estendidos do Apache Spark History Server para depurar e diagnosticar aplicativos Spark concluídos ou em execução. A extensão inclui uma guia Dados , uma guia Gráfico e uma guia Diagnóstico . Na guia Dados , você pode verificar os dados de entrada e saída do trabalho do Spark. Na guia Gráfico, você pode verificar o fluxo de dados e reproduzir o gráfico de trabalho. Na guia Diagnóstico, você pode consultar os recursos Enviesamento de dados, Inclinação de tempo e Análise de uso do executor.
Obter acesso ao Spark History Server
O Spark History Server é a interface do usuário da Web para aplicativos Spark concluídos e em execução. Você pode abri-lo no portal do Azure ou em uma URL.
Abra a interface do usuário da Web do Spark History Server no portal do Azure
No portal do Azure, abra o cluster do Spark. Para obter mais informações, consulte Listar e mostrar clusters.
Em Painéis de cluster, selecione Servidor de histórico do Spark. Quando solicitado, insira as credenciais de administrador para o cluster do Spark.
o portal do Azure." border="true":::
Abra a interface do usuário da Web do Spark History Server por URL
Abra o Spark History Server navegando até https://CLUSTERNAME.azurehdinsight.net/sparkhistory
, onde CLUSTERNAME é o nome do cluster do Spark.
A interface do usuário da Web do Spark History Server pode ser semelhante a esta imagem:
Use a guia Dados no Servidor de Histórico do Spark
Selecione o ID do trabalho e, em seguida, selecione Dados no menu de ferramentas para ver a visualização de dados.
Analise Entradas, Saídas e Operações de Tabela selecionando as guias individuais.
Copie todas as linhas selecionando o botão Copiar .
Salve todos os dados como um arquivo . CSV selecionando o botão csv .
Pesquise os dados introduzindo palavras-chave no campo Pesquisar . Os resultados da pesquisa serão exibidos imediatamente.
Selecione o cabeçalho da coluna para classificar a tabela. Selecione o sinal de adição para expandir uma linha e mostrar mais detalhes. Selecione o sinal de subtração para recolher uma linha.
Faça o download de um único arquivo selecionando o botão Download parcial à direita. O arquivo selecionado será baixado localmente. Se o arquivo não existir mais, isso abrirá uma nova guia para mostrar as mensagens de erro.
Copie um caminho completo ou um caminho relativo selecionando a opção Copiar caminho completo ou Copiar caminho relativo, que se expande no menu de download. Para arquivos do Armazenamento do Azure Data Lake, selecione Abrir no Gerenciador de Armazenamento do Azure para iniciar o Gerenciador de Armazenamento do Azure e localizar a pasta após entrar.
Se houver muitas linhas para exibir em uma única página, selecione os números de página na parte inferior da tabela para navegar.
Para obter mais informações, passe o mouse sobre ou selecione o ponto de interrogação ao lado de Dados para o aplicativo Spark para mostrar a dica de ferramenta.
Para enviar comentários sobre problemas, selecione Fornecer-nos comentários.
Use a guia Gráfico no Servidor de Histórico do Spark
Selecione o ID do trabalho e, em seguida, selecione Gráfico no menu da ferramenta para ver o gráfico do trabalho. Por padrão, o gráfico mostrará todos os trabalhos. Filtre os resultados usando o menu suspenso ID do trabalho.
O progresso é selecionado por padrão. Verifique o fluxo de dados selecionando Leitura ou Gravação no menu suspenso Exibir.
A cor de fundo de cada tarefa corresponde a um mapa de calor.
Cor Description Verde O trabalho foi concluído com êxito. Orange A tarefa falhou, mas isso não afeta o resultado final do trabalho. Essas tarefas têm instâncias duplicadas ou repetidas que podem ser bem-sucedidas mais tarde. Azul A tarefa está em execução. Caucasiano A tarefa está aguardando para ser executada ou o estágio foi ignorado. Vermelho A tarefa falhou. Os estágios ignorados são exibidos em branco.
Nota
A reprodução está disponível para trabalhos concluídos. Selecione o botão Reprodução para reproduzir o trabalho. Pare o trabalho a qualquer momento, selecionando o botão parar. Quando um trabalho é reproduzido, cada tarefa exibirá seu status por cor. A reprodução não é suportada para trabalhos incompletos.
Desloque-se para aumentar ou diminuir o zoom no gráfico de tarefas ou selecione Zoom a ajustar para o ajustar ao ecrã.
Quando as tarefas falharem, passe o mouse sobre o nó do gráfico para ver a dica de ferramenta e selecione o estágio para abri-lo em uma nova página.
Na página Aplicativo Spark & Job Graph, os estágios exibirão dicas de ferramentas e pequenos ícones se as tarefas atenderem a estas condições:
Inclinação de dados: Tamanho > médio de leitura de dados de todas as tarefas dentro deste estágio * 2 e tamanho > de leitura de dados 10 MB.
Tempo de distorção: Tempo > de execução médio de todas as tarefas dentro desta etapa * 2 e tempo > de execução 2 minutos.
O nó do gráfico de trabalho exibirá as seguintes informações sobre cada estágio:
ID
Nome ou descrição
Número total da tarefa
Dados lidos: a soma do tamanho de entrada e do tamanho de leitura aleatório
Gravação de dados: a soma do tamanho da saída e do tamanho da gravação aleatória
Tempo de execução: o tempo entre a hora de início da primeira tentativa e a hora de conclusão da última tentativa
Contagem de linhas: a soma dos registros de entrada, registros de saída, registros de leitura aleatória e registros de gravação aleatória
Progresso
Nota
Por padrão, o nó do gráfico de trabalho exibirá informações da última tentativa de cada estágio (exceto o tempo de execução do estágio). Mas durante a reprodução, o nó do gráfico de trabalho mostrará informações sobre cada tentativa.
Nota
Para tamanhos de leitura e gravação de dados, usamos 1MB = 1000 KB = 1000 * 1000 bytes.
Envie comentários sobre problemas selecionando Fornecer-nos comentários.
Use a guia Diagnóstico no Servidor de Histórico do Spark
Selecione o ID do trabalho e, em seguida, selecione Diagnóstico no menu da ferramenta para ver a visualização do diagnóstico do trabalho. A guia Diagnóstico inclui Inclinação de dados, Inclinação de tempo e Análise de uso do executor.
Revise a Inclinação de Dados, a Inclinação de Tempo e a Análise de Uso do Executor selecionando as guias, respectivamente.
Distorção de Dados
Selecione a guia Distorção de dados. As tarefas distorcidas correspondentes são exibidas com base nos parâmetros especificados.
Especificar parâmetros
A seção Especificar parâmetros exibe os parâmetros, que são usados para detetar a inclinação de dados. A regra padrão é: Os dados da tarefa lidos são três vezes superiores à média dos dados lidos da tarefa e os dados da tarefa lidos têm mais de 10 MB. Se quiser definir sua própria regra para tarefas distorcidas, você pode escolher seus parâmetros. As seções Estágio Distorcido e Gráfico de Inclinação serão atualizadas de acordo.
Palco enviesado
A seção Estágio Distorcido exibe estágios que têm tarefas distorcidas que atendem aos critérios especificados. Se houver mais de uma tarefa distorcida em um estágio, a seção Estágio Distorcido exibirá apenas a tarefa mais distorcida (ou seja, os maiores dados para a distorção de dados).
Gráfico de inclinação
Quando você seleciona uma linha na tabela Estágio de inclinação , o gráfico de inclinação exibe mais detalhes de distribuição de tarefas com base na leitura de dados e no tempo de execução. As tarefas distorcidas são marcadas em vermelho e as tarefas normais são marcadas em azul. Para consideração de desempenho, o gráfico exibe até 100 tarefas de exemplo. Os detalhes da tarefa são exibidos no painel inferior direito.
Distorção do tempo
A guia Distorção de tempo exibe tarefas distorcidas com base no tempo de execução da tarefa.
Especificar parâmetros
A seção Especificar parâmetros exibe os parâmetros, que são usados para detetar distorção de tempo. A regra padrão é: o tempo de execução da tarefa é maior que três vezes o tempo médio de execução e o tempo de execução da tarefa é maior que 30 segundos. Você pode alterar os parâmetros com base em suas necessidades. O Palco Distorcido e o Gráfico de Inclinação exibem as informações de estágios e tarefas correspondentes, assim como na guia Inclinação de Dados.
Quando você seleciona Inclinação de tempo, o resultado filtrado é exibido na seção Estágio enviesado, de acordo com os parâmetros definidos na seção Especificar parâmetros. Quando você seleciona um item na seção Palco enviesado, o gráfico correspondente é rasgado na terceira seção e os detalhes da tarefa são exibidos no painel inferior direito.
Gráficos de Análise de Uso do Executor
O Gráfico de Uso do Executor exibe a alocação real do executor e o status de execução do trabalho.
Quando você seleciona Análise de uso do executor, quatro curvas diferentes sobre o uso do executor são rascunhadas: Executores alocados, Executores em execução, Executores ociosos e Instâncias máximas do executor. Cada evento de Executor adicionado ou removido aumentará ou diminuirá os executores alocados. Você pode verificar a Linha do Tempo do Evento na guia Trabalhos para obter mais comparações.
Selecione o ícone de cor para selecionar ou desmarcar o conteúdo correspondente em todos os rascunhos.
FAQ
Como faço para reverter para a versão da comunidade?
Para reverter para a versão da comunidade, siga as etapas a seguir.
Abra o cluster no Ambari.
Navegue até Spark2>Configs.
Selecione Faísca personalizada2-defaults.
Selecione Adicionar propriedade ....
Adicione spark.ui.enhancement.enabled=false e salve-o.
A propriedade define como false agora.
Selecione Guardar para guardar a configuração.
Selecione Spark2 no painel esquerdo. Em seguida, na guia Resumo , selecione Spark2 History Server.
Para reiniciar o Spark History Server, selecione o botão Iniciado à direita do Spark2 History Server e selecione Reiniciar no menu suspenso.
Atualize a interface do usuário da Web do Spark History Server. Ele será revertido para a versão da comunidade.
Como carrego um evento do Spark History Server para relatá-lo como um problema?
Se você encontrar um erro no Spark History Server, execute as etapas a seguir para relatar o evento.
Baixe o evento selecionando Download na interface do usuário da Web do Spark History Server.
Selecione Fornecer-nos comentários na página Spark Application & Job Graph .
Forneça o título e uma descrição do erro. Em seguida, arraste o arquivo .zip para o campo de edição e selecione Enviar novo problema.
Como faço para atualizar um arquivo .jar em um cenário de hotfix?
Se você quiser atualizar com um hotfix, use o seguinte script, que atualizará spark-enhancement.jar*
o .
upgrade_spark_enhancement.sh:
#!/usr/bin/env bash
# Copyright (C) Microsoft Corporation. All rights reserved.
# Arguments:
# $1 Enhancement jar path
if [ "$#" -ne 1 ]; then
>&2 echo "Please provide the upgrade jar path."
exit 1
fi
install_jar() {
tmp_jar_path="/tmp/spark-enhancement-hotfix-$( date +%s )"
if wget -O "$tmp_jar_path" "$2"; then
for FILE in "$1"/spark-enhancement*.jar
do
back_up_path="$FILE.original.$( date +%s )"
echo "Back up $FILE to $back_up_path"
mv "$FILE" "$back_up_path"
echo "Copy the hotfix jar file from $tmp_jar_path to $FILE"
cp "$tmp_jar_path" "$FILE"
"Hotfix done."
break
done
else
>&2 echo "Download jar file failed."
exit 1
fi
}
jars_folder="/usr/hdp/current/spark2-client/jars"
jar_path=$1
if ls ${jars_folder}/spark-enhancement*.jar 1>/dev/null 2>&1; then
install_jar "$jars_folder" "$jar_path"
else
>&2 echo "There is no target jar on this node. Exit with no action."
exit 0
fi
Utilização
upgrade_spark_enhancement.sh https://${jar_path}
Exemplo
upgrade_spark_enhancement.sh https://${account_name}.blob.core.windows.net/packages/jars/spark-enhancement-${version}.jar
Usar o arquivo bash do portal do Azure
Inicie o portal do Azure e selecione seu cluster.
Conclua uma ação de script com os seguintes parâmetros.
Property valor Tipo de script - Personalizado Nome UpgradeJar Bash script URI https://hdinsighttoolingstorage.blob.core.windows.net/shsscriptactions/upgrade_spark_enhancement.sh
Tipo(s) de nó(s) Chefe, Trabalhador Parâmetros https://${account_name}.blob.core.windows.net/packages/jars/spark-enhancement-${version}.jar
Problemas conhecidos
Atualmente, o Spark History Server só funciona para o Spark 2.3 e 2.4.
Os dados de entrada e saída que usam RDD não serão exibidos na guia Dados .
Próximos passos
Sugestões
Se você tiver algum feedback ou se deparar com algum problema ao usar esta ferramenta, envie um e-mail para (hdivstool@microsoft.com).