Eseguire il debug remoto delle applicazioni Spark su un cluster HDInsight con Azure Toolkit per IntelliJ tramite SSH

Questo articolo contiene istruzioni dettagliate su come usare gli Strumenti HDInsight in Azure Toolkit per IntelliJ per il debug remoto di applicazioni in un cluster di HDInsight. È possibile seguire questo video per eseguire il debug del progetto.

Prerequisiti:

Creare un'applicazione Scala Spark e configurarla per il debug remoto

  1. Avviare IntelliJ IDEA e creare un progetto. Nella finestra di dialogo del nuovo progetto selezionare le opzioni seguenti e quindi fare clic su Next (Avanti). In questo articolo si usa un'esecuzione di esempio di Spark in un cluster HDInsight (Scala) come esempio.

    Creare un progetto di debug

    • Selezionare HDInsight nel riquadro sinistro.
    • Nel riquadro di destra selezionare un modello Java o Scala in base alle preferenze. Scegliere una delle opzioni seguenti:
      • Spark in HDInsight (Scala)
      • Spark in HDInsight (Java)
      • Esecuzione di esempio di Spark in un cluster HDInsight (Scala)
    • Strumento di compilazione: la procedura guidata di creazione del progetto Scala supporta Maven o SBT per la gestione delle dipendenze e la compilazione per il progetto Scala. Selezionarne uno in base alle necessità.
  2. Nella finestra successiva specificare i dettagli del progetto.

    Selezione di Spark SDK

    • Specificare un nome per il progetto e il relativo percorso.
    • Per Project SDK, usare Java 1.8 per cluster Spark 2. x o Java 1.7 per cluster Spark 1.x.
    • Per la Versione di Spark, la creazione guidata del progetto Scala integra la versione corretta per Spark SDK e Scala SDK. Se la versione del cluster Spark è inferiore a 2.0, scegliere Spark 1.x. In caso contrario, selezionare Spark 2.x. In questo articolo viene usata la versione Spark 2.0.2 (Scala 2.11.8) come esempio.
  3. Selezionare src > main > scala per aprire il codice nel progetto. In questo articolo viene usato lo script SparkCore_wasbloTest come esempio.
  4. Per accedere al menu Modifica configurazioni selezionare l'icona nell'angolo superiore destro. Da questo menu è possibile creare o modificare le configurazioni per il debug remoto.

    Modifica configurazioni

  5. Nella finestra Run/Debug Configurations (Esegui/Debug delle configurazioni) fare clic sul segno più (+). Selezionare quindi l'opzione Submit Spark Job (Invia processo Spark).

    Modifica configurazioni

  6. Immettere le informazioni per Nome, Cluster Spark, e Nome della classe principale. Selezionare quindi Configurazione avanzata.

    Eseguire configurazioni di debug

  7. Nella finestra di dialogo Spark Submission Advanced Configuration (Configurazione avanzata invio Spark) selezionare Enable Spark remote debug (Abilita debug remoto Spark). Immettere il nome utente o la password SSH oppure usare un file di chiave privata. Per salvare, selezionare Ok.

    Abilitare il debug remoto di Spark

  8. A questo punto, la configurazione viene salvata con il nome specificato. Per visualizzare i dettagli della configurazione, selezionare il relativo nome. Per apportare modifiche, selezionare Modifica configurazioni.
  9. Dopo aver completato le impostazioni di configurazione, è possibile eseguire il progetto con il cluster remoto oppure eseguire il debug remoto.

Informazioni su come effettuare il debug remoto e l'esecuzione remota

Scenario 1: Esecuzione remota

  1. Per eseguire il progetto in modalità remota, selezionare l'icona Esegui.

    Fare clic sull'icona Esegui

  2. La finestra HDInsight Spark Submission (Invio Spark in HDInsight) mostra lo stato di esecuzione dell'applicazione. È possibile monitorare lo stato di avanzamento del processo Scala in base alle informazioni mostrate qui.

    Fare clic sull'icona Esegui

Scenario 2: Debug remoto

  1. Impostare un punto di interruzione e quindi selezionare l'icona Debug.

    Fare clic sull'icona Debug

  2. Quando l'esecuzione del programma raggiunge il punto di interruzione, nel riquadro inferiore verrà visualizzata la scheda Debugger. Vengono anche visualizzate le informazioni di parametro e variabile nella finestra Variabile. Fare clic sull'icona Step Over (Continua) per passare alla riga di codice successiva. A quel punto è possibile procedere ulteriormente nel codice. Selezionare l'icona Resume Program (Riprendi programma) per continuare a eseguire il codice. È possibile esaminare lo stato di esecuzione nella finestra HDInsight Spark Submission (Invio Spark in HDInsight).

    Scheda di debug

Scenario 3: Debug e correzione di bug da remoto

In questa sezione viene illustrato come aggiornare in modo dinamico il valore variabile usando la funzionalità di debug di IntelliJ per una correzione semplificata. Per l'esempio di codice seguente, viene generata un'eccezione poiché il file di destinazione esiste già.

    import org.apache.spark.SparkConf
    import org.apache.spark.SparkContext

    object SparkCore_WasbIOTest {
      def main(arg: Array[String]): Unit = {
        val conf = new SparkConf().setAppName("SparkCore_WasbIOTest")
        val sc = new SparkContext(conf)
        val rdd = sc.textFile("wasb:///HdiSamples/HdiSamples/SensorSampleData/hvac/HVAC.csv")

        // Find the rows that have only one digit in the sixth column.
        val rdd1 = rdd.filter(s => s.split(",")(6).length() == 1)

        try {
          var target = "wasb:///HVACout2_testdebug1";
          rdd1.saveAsTextFile(target);
        } catch {
          case ex: Exception => {
            throw ex;
          }
        }
      }
    }

Per eseguire il debug e la correzione di bug da remoto

  1. Impostare due punti di interruzione e quindi fare clic sull'icona Debug per avviare il processo di debug remoto.

  2. Il codice si ferma in corrispondenza del primo punto di interruzione e le informazioni di parametro e variabile vengono visualizzate nella finestra Variabile.

  3. Fare clic sull'icona Resume Program (Riprendi programma) per continuare. Il codice si interrompe in corrispondenza del secondo punto. L'eccezione viene rilevata come previsto.

    Errore di generazione

  4. Fare nuovamente clic sull'icona Resume Program (Riprendi programma). La finestra HDInsight Spark Submission (Invio Spark in HDInsight) mostra un errore di esecuzione processo non riuscita.

    Errore nell'invio

  5. Per aggiornare dinamicamente il valore della variabile usando la funzionalità di debug di IntelliJ, selezionare nuovamente Debug. Viene nuovamente visualizzata la finestra Variabile.

  6. Fare clic con il pulsante destro del mouse sulla destinazione nella scheda Debug, quindi selezionare Imposta valore. Indicare quindi un nuovo valore per la variabile e selezionare Invia per salvarlo.

    Impostare il valore

  7. Fare clic sull'icona Resume Program (Riprendi programma) per continuare a eseguire il programma. Questa volta, l'eccezione non viene rilevata. È possibile notare come il progetto venga eseguito correttamente senza eccezioni.

    Debug senza eccezioni

Vedere anche

Demo

Scenari

Creare ed eseguire applicazioni

Strumenti ed estensioni

Gestire risorse