Partilhar via


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

  1. No portal do Azure, abra o cluster do Spark. Para obter mais informações, consulte Listar e mostrar clusters.

  2. Em Painéis de cluster, selecione Servidor de histórico do Spark. Quando solicitado, insira as credenciais de administrador para o cluster do Spark.

    Launch the Spark History Server from the Azure portal. 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:

The Spark History Server page.

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.

    Data tabs on the Data for Spark Application page.

  • Copie todas as linhas selecionando o botão Copiar .

    Copy data on the Spark application page.

  • Salve todos os dados como um arquivo . CSV selecionando o botão csv .

    Save data as a .CSV file from the Data for Spark Application page.

  • Pesquise os dados introduzindo palavras-chave no campo Pesquisar . Os resultados da pesquisa serão exibidos imediatamente.

    Search data on the Data for Spark Application page.

  • 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.

    The data table on the Data for Spark Application page.

  • 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.

    The data download row on the Data for Spark Application page.

  • 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.

    Copy Full Path and Copy Relative Path options on the Data for Spark Application page.

  • 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.

    Page numbers on the Data for Spark Application page.

  • 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.

    Get more information from the Data for Spark Application page.

  • Para enviar comentários sobre problemas, selecione Fornecer-nos comentários.

    Provide feedback from the Data for Spark Application page.

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.

    The Job ID drop-down menu on the Spark Application & Job Graph page.

  • O progresso é selecionado por padrão. Verifique o fluxo de dados selecionando Leitura ou Gravação no menu suspenso Exibir.

    Check the data flow on the Spark Application & Job Graph page.

  • A cor de fundo de cada tarefa corresponde a um mapa de calor.

    The heat map on the Spark Application & Job Graph page.

    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.

    Running a task on the Spark Application & Job Graph page.

    Os estágios ignorados são exibidos em branco. A skipped task on the Spark Application & Job Graph page.

    A failed task on the Spark Application & Job Graph page.

    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ã.

    Select Zoom to fit on the Spark Application & Job Graph page.

  • 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.

    View the tooltip on the Spark Application & Job Graph page.

  • 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.

      The skewed task icon on the Spark Application & Job Graph page.

  • 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.

    The feedback option on the Spark Application & Job Graph page.

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.

    The Data Skew tab within the Diagnosis tab.

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).

Larger view of the Data Skew tab within the Diagnosis tab.

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.

The Skew Chart for Stage 10 in the Spark UI.

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.

The Time skew tab within the Diagnosis tab.

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.

The Executor Usage Analysis tab within the Diagnosis tab.

Selecione o ícone de cor para selecionar ou desmarcar o conteúdo correspondente em todos os rascunhos.

Select the chart in the Executor Usage Analysis tab.

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.

  1. Abra o cluster no Ambari.

  2. Navegue até Spark2>Configs.

  3. Selecione Faísca personalizada2-defaults.

  4. Selecione Adicionar propriedade ....

  5. Adicione spark.ui.enhancement.enabled=false e salve-o.

  6. A propriedade define como false agora.

  7. Selecione Guardar para guardar a configuração.

    Turn off a feature in Apache Ambari.

  8. Selecione Spark2 no painel esquerdo. Em seguida, na guia Resumo , selecione Spark2 History Server.

    The summary view in Apache Ambari.

  9. Para reiniciar o Spark History Server, selecione o botão Iniciado à direita do Spark2 History Server e selecione Reiniciar no menu suspenso.

    Restart the Spark History Server in Apache Ambari.

  10. 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.

  1. Baixe o evento selecionando Download na interface do usuário da Web do Spark History Server.

    Download the event in the Spark History Server UI.

  2. Selecione Fornecer-nos comentários na página Spark Application & Job Graph .

    Provide feedback on the Spark Application & Job Graph page.

  3. 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.

    Upload and submit a new issue.

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

  1. Inicie o portal do Azure e selecione seu cluster.

  2. 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

    Azure portal submit script action.

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).