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 Create New Project 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 New Project select Spark version.

  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 Project local run result.

  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 Run debug configurations local run.

    • 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 Add new configuration.

  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 numExectors, o valor padrão é 5. É melhor não definir como maior que 3.

    Intellij Run debug configurations.

  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 Advanced Configuration enable spark remote debug.

  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 Debug Remote Spark Job Remote run button.

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

    Intellij Debug Remote Spark Job Remote run result.

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 Debug Remote Spark Job debug icon.

  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 Debug Remote Spark Job Debugging tab.

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 Debug Remote Spark Job throw error.

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

    Intellij Debug Remote Spark Job Error submission.

  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 Debug Remote Spark Job set value.

  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 Debug Remote Spark Job without exception.

Próximas etapas

Cenários

Criar e executar aplicativos

Ferramentas e extensões

Gerenciar recursos