Compartilhar via


Depurar aplicativos do Apache Spark em um cluster HDInsight com o Azure Toolkit for IntelliJ por meio do SSH

Este artigo fornece orientação passo-a-passo sobre como usar as Ferramentas do HDInsight no Azure Toolkit for IntelliJ para depurar aplicativos remotamente em um cluster do HDInsight.

Pré-requisitos

Criar um aplicativo Spark Scala

  1. Inicie o IntelliJ IDEA e selecione Criar novo projeto para abrir a janela Novo projeto.

  2. Selecione Apache Spark/HDInsight no painel esquerdo.

  3. Selecione Projeto Spark com Exemplos (Scala) na janela principal.

  4. Na lista suspensa Ferramenta de build, selecione uma das seguintes opções:

    • Maven para obter suporte ao assistente de criação de projetos Scala.
    • SBT para gerenciar as dependências e para criar no projeto Scala.

    Intellij Criar um novo projeto do Spark.

  5. Selecione Avançar.

  6. Na próxima janela Novo Projeto, forneça as seguintes informações:

    Propriedade Descrição
    Nome do projeto Insira um nome. Essa explicação usa myApp.
    Localização do projeto Insira o local desejado para salvar o projeto.
    SDK do projeto Se estiver em branco, selecione Novo... e navegue até o JDK.
    Versão do Spark O assistente de criação integra a versão apropriada para o SDK do Spark e o SDK do Scala. Se a versão do cluster do Spark for anterior à 2.0, selecione Spark 1.x. Caso contrário, selecione Spark 2.x. Esse exemplo usa o Spark 2.3.0 (Scala 2.11.8) .

    Intellij Novo Projeto selecione a versão do Spark.

  7. Selecione Concluir. Pode levar alguns minutos antes que o projeto fique disponível. Observe o progresso no canto inferior direito.

  8. Expanda o projeto e navegue até src>main>scala>sample. Clique duas vezes em SparkCore_WasbIOTest.

Realizar execução local

  1. No script SparkCore_WasbIOTest, clique com o botão direito do mouse no editor de script e selecione a opção Executar 'SparkCore_WasbIOTest' para realizar a execução local.

  2. Assim que a execução local estiver concluída, você pode ver o arquivo de saída salvo no Explorador de projeto atual dados>padrão.

    Intellij Resultado da execução local do projeto.

  3. Nossas ferramentas definiram a configuração de execução local automaticamente quando você executar a execução local e depuração local. Abra a configuração [Spark no HDInsight] XXX no canto superior direito, você verá [Spark no HDInsight]XXX já criado em Apache Spark no HDInsight. Mude para a guia Executar localmente.

    Intellij Execução de configurações de depuração execução local.

    • Variáveis de ambiente: se você já definiu a variável de ambiente do sistema HADOOP_HOME como C:\WinUtils, ela pode detectar automaticamente que não é necessário adicionar manualmente.
    • Local de WinUtils.exe: se você não tiver definido a variável de ambiente do sistema, poderá encontrar o local clicando em seu botão.
    • Basta escolher uma das duas opções, e elas não são necessárias em MacOS e Linux.
  4. Você também pode definir a configuração manualmente antes de executar a depuração e execução local. Na captura de tela acima, selecione o sinal de adição ( + ). Em seguida, selecione a opção Apache Spark no HDInsight. Insira as informações para Nome, Nome da classe principal para salvar, em seguida, clique no botão de execução local.

Executar depuração local

  1. Abra o script SparkCore_wasbloTest e defina os pontos de interrupção.

  2. Clique com o botão direito do mouse no editor de script e, em seguida, selecione a opção Depurar '[Spark no HDInsight]XXX' para realizar a depuração local.

Realizar execução remota

  1. Navegue para Executar>Editar configurações... . Nesse menu, você pode criar ou editar as configurações para depuração remota.

  2. Na caixa de diálogo Configurações de Execução/Depuração, selecione o sinal de mais (+). Em seguida, selecione a opção Apache Spark no HDInsight.

    Intellij Adicionar nova configuração.

  3. Alterne para a guia Executar Remotamente no Cluster. Insira as informações de Nome, Cluster do Spark e Nome da classe principal. Em seguida, clique em Configuração avançada (depuração remota) . Nossas ferramentas oferecem suporte à depuração com Executores. O numExecutors, o valor padrão é 5. É melhor não definir como maior que 3.

    Intellij Executar configurações de depuração.

  4. Na parte Configuração Avançada (Depuração Remota) , selecione Habilitar depuração remota do Spark. Insira o nome de usuário do SSH e insira uma senha ou use um arquivo de chave privada. Se desejar executar a depuração remota, será necessário configurá-la. Não será necessário configurá-la se quiser usar apenas a execução remota.

    Intellij Configuração avançada habilitar depuração remota do Spark.

  5. Agora, a configuração está salva com o nome fornecido. Para exibir os detalhes de configuração, selecione o nome da configuração. Para fazer alterações, selecione Editar configurações.

  6. Após concluir as definições de configurações, você poderá executar o projeto no cluster remoto ou realizar a depuração remota.

    Intellij Depurar o Trabalho Remoto do Spark Botão de execução remota.

  7. Clique no botão Desconectar para ocultar os logs de envio do painel esquerdo. Eles continuarão sendo executados em segundo plano.

    Intellij Depurar o Trabalho Remoto do Spark Resultado da execução remota.

Executar depuração remota

  1. Configure pontos de interrupção e, em seguida, clique no ícone Depuração remota. A diferença com envio remoto é que o nome de usuário/senha de SSH devem ser configurados.

    Intellij Ícone de depuração remota de trabalho do Spark.

  2. Quando a execução do programa atingir o ponto de interrupção, você verá uma guia Driver e duas guias Executor no painel Depurador. Selecione o ícone Retomar Programa para continuar a execução do código, que alcança o próximo ponto de interrupção. Você precisará mudar para a guia Executor correta para localizar o executor de destino para depurar. Você pode visualizar os logs de execução na guia Console correspondente.

    Intellij Guia de depuração remota de trabalho do Spark.

Para realizar depuração remota e correção de bugs

  1. Configure dois pontos de interrupção e, em seguida, selecione o ícone Depurar para iniciar o processo de depuração remota.

  2. O código para no primeiro ponto de interrupção e as informações de parâmetro e de variáveis são mostradas no painel Variáveis.

  3. Selecione o ícone Retomar Programa para continuar. O código para no segundo ponto. A exceção é capturada conforme o esperado.

    Intellij Geração de erro de depuração remota de trabalho do Spark.

  4. Selecione o ícone Retomar Programa novamente. A janela Envio do HDInsight Spark exibe um erro de “falha na execução do trabalho”.

    Intellij Envio de erro de trabalho do Spark Remoto de Depuração.

  5. Para atualizar dinamicamente o valor da variável usando a capacidade de depuração do IntelliJ, selecione Depurar novamente. O painel Variáveis é exibido novamente.

  6. Clique com o botão direito do mouse no destino na guia Depurar e, então, selecione Definir valor. Em seguida, insira um novo valor para a variável. Depois, selecione Enter para salvar o valor.

    Intellij Valor de depuração remota de trabalho do Spark.

  7. Selecione o ícone Retomar Programa para continuar a execução do programa. Neste momento, nenhuma exceção é detectada. Você pode ver que o projeto é executado com êxito, sem exceções.

    Intellij Depuração remota de trabalho do Spark sem exceção.

Próximas etapas

Cenários

Criar e executar aplicativos

Ferramentas e extensões

Gerenciar recursos