Depurar aplicativos Apache Spark em um cluster HDInsight com o Kit de Ferramentas do Azure para IntelliJ por SSH

Este artigo fornece orientação passo a passo sobre como usar as Ferramentas do HDInsight no Kit de Ferramentas do Azure para IntelliJ para depurar aplicativos remotamente em um cluster 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 Spark Project with Samples (Scala) na janela principal.

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

    • Suporte ao assistente de criação de projetos Maven for Scala.
    • SBT para gerenciar as dependências e construir para o projeto Scala.

    Intellij Create New Project Spark.

  5. Selecione Seguinte.

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

    Property Description
    Nome do projeto Introduza um nome. Este passo a passo pelos usos myApp.
    Localização do projeto Insira o local desejado para salvar seu projeto.
    SDK do projeto Se estiver em branco, selecione Novo e navegue até o JDK.
    Versão Spark O assistente de criação integra a versão adequada 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.. Este exemplo usa o Spark 2.3.0 (Scala 2.11.8).

    Intellij New Project select Spark version.

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

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

Executar execução local

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

  2. Depois que a execução local for concluída, você poderá ver o arquivo de saída salvo no padrão de dados> do explorador de projetos atual.

    Intellij Project local run result.

  3. Nossas ferramentas definiram a configuração de execução local padrão automaticamente quando você executa a execução local e a depuração local. Abra a configuração [Spark on HDInsight] XXX no canto superior direito, você pode ver o [Spark on HDInsight]XXX já criado no Apache Spark no HDInsight. Alterne 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 poderá detetar automaticamente que não há necessidade de adicionar manualmente.
    • WinUtils.exe Localização: Se você não definiu a variável de ambiente do sistema, você pode encontrar o local clicando em seu botão.
    • Basta escolher qualquer uma das duas opções e, eles não são necessários no MacOS e Linux.
  4. Você também pode definir a configuração manualmente antes de executar a execução local e a depuração local. Na captura de tela anterior, 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 e clique no botão Executar local.

Executar depuração local

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

  2. Clique com o botão direito do mouse no editor de scripts e selecione a opção Depurar '[Faísca no HDInsight]XXX' para executar a depuração local.

Executar execução remota

  1. Navegue até Executar>configurações de edição.... Neste menu, você pode criar ou editar as configurações para depuração remota.

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

    Intellij Add new configuration.

  3. Alterne para a guia Executar remotamente no cluster . Insira informações para Nome, Cluster Spark e Nome da classe Principal. Em seguida, clique em Configuração avançada (Depuração remota). Nossas ferramentas suportam depuração com Executores. O numExectors, o valor padrão é 5. É melhor não definir acima de 3.

    Intellij Run debug configurations.

  4. Na parte Configuração Avançada (Depuração Remota), selecione Ativar depuração remota do Spark. Introduza o nome de utilizador SSH e, em seguida, introduza uma palavra-passe ou utilize um ficheiro de chave privada. Se você quiser executar a depuração remota, você precisa configurá-lo. Não há necessidade de configurá-lo se você quiser apenas usar a execução remota.

    Intellij Advanced Configuration enable spark remote debug.

  5. A configuração agora é salva com o nome que você forneceu. Para visualizar os detalhes da configuração, selecione o nome da configuração. Para fazer alterações, selecione Editar configurações.

  6. Depois de concluir as definições de configurações, você pode executar o projeto no cluster remoto ou executar a depuração remota.

    Intellij Debug Remote Spark Job Remote run button.

  7. Clique no botão Desconectar para que os logs de envio não apareçam no painel esquerdo. No entanto, ele ainda está sendo executado no back-end.

    Intellij Debug Remote Spark Job Remote run result.

Executar depuração remota

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

    Intellij Debug Remote Spark Job debug icon.

  2. Quando a execução do programa atinge o ponto de rutura, você vê uma guia Driver e duas guias Executor no painel Depurador . Selecione o ícone Retomar programa para continuar executando o código, que então atinge o próximo ponto de interrupção. Você precisa alternar para a guia Executor correta para encontrar 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.

Execute 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 variável são mostradas no painel Variáveis .

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

    Intellij Debug Remote Spark Job throw error.

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

    Intellij Debug Remote Spark Job Error submission.

  5. Para atualizar dinamicamente o valor da variável usando o recurso de depuração IntelliJ, selecione Depurar novamente. O painel Variáveis aparece novamente.

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

    Intellij Debug Remote Spark Job set value.

  7. Selecione o ícone Retomar programa para continuar a executar o programa. Desta vez, nenhuma exceção é capturada. Você pode ver que o projeto é executado com êxito sem exceções.

    Intellij Debug Remote Spark Job without exception.

Próximos passos

Cenários

Criar e executar aplicações

Ferramentas e extensões

Gerir recursos