Déboguez des applications Apache Spark sur un cluster HDInsight avec le kit de ressources Azure pour IntelliJ via SSH

Cet article propose des instructions étape par étape sur la façon d’utiliser HDInsight Tools dans le kit de ressources Azure pour IntelliJ afin de déboguer des applications à distance sur un cluster HDInsight.

Prérequis

Créer une application Spark Scala

  1. Démarrez IntelliJ IDEA, puis sélectionnez Create New Project (Créer un projet) pour ouvrir la fenêtre New Project (Nouveau projet).

  2. Sélectionnez Apache Spark/HDInsight dans le volet gauche.

  3. Sélectionnez Spark Project avec exemples (Scala) [Projet Spark (Scala)] dans la fenêtre principale.

  4. Dans la liste déroulante Build tool (Outil de build), sélectionnez l’un des outils suivants :

    • Maven pour la prise en charge de l’Assistant de création de projets Scala.
    • SBT pour gérer les dépendances et la génération du projet Scala.

    Intellij Create New Project Spark.

  5. Cliquez sur Suivant.

  6. Dans la fenêtre suivante New Project (Nouveau projet), entrez les informations suivantes :

    Propriété Description
    Nom du projet Entrez un nom. Cette procédure utilise myApp.
    Emplacement du projet Entrez l’emplacement où vous souhaitez enregistrer votre projet.
    Project SDK (SDK du projet) Si vide, sélectionnez New... (Nouveau) et accédez à votre JDK.
    Version de Spark L’Assistant de création intègre la version correcte des SDK Spark et Scala. Si la version du cluster Spark est antérieure à la version 2.0, sélectionnez Spark 1.x. Sinon, sélectionnez Spark 2.x. . Cet exemple utilise Spark 2.3.0 (Scala 2.11.8) .

    Intellij New Project select Spark version.

  7. Sélectionnez Terminer. Vous devrez peut-être patienter quelques minutes avant que le projet soit disponible. La progression s’affiche dans l’angle inférieur droit.

  8. Développez votre projet et accédez à src>main>scala>sample. Double-cliquez sur SparkCore_WasbIOTest.

Effectuer une exécution locale

  1. Dans le script SparkCore_wasbloTest, cliquez avec le bouton droit sur l’éditeur de script, puis sélectionnez l’option SparkCore_WasbIOTest pour effectuer l’exécution locale.

  2. Une fois l’exécution locale terminée, vous pouvez voir le fichier de sortie enregistré dans l’Explorateur de votre projet actuel data>default .

    Intellij Project local run result.

  3. Nos outils définissent la configuration de l’exécution locale par défaut automatiquement lorsque vous effectuez l’exécution et le débogage locaux. Ouvrez la configuration [Spark on HDInsight] XXX en haut à droite. Comme vous pouvez le voir, la configuration [Spark on HDInsight]XXX est déjà créée sous Apache Spark on HDInsight. Basculez vers l’onglet Locally Run (Exécuter localement) .

    Intellij Run debug configurations local run.

    • Variables d’environnement : si vous avez déjà défini la variable d’environnement système HADOOP_HOME sur C:\WinUtils, elle peut détecter automatiquement qu’aucun ajout manuel n’est nécessaire.
    • Emplacement de WinUtils.exe : si vous n’avez pas défini la variable d’environnement système, vous pouvez trouver l’emplacement en cliquant sur son bouton.
    • Choisissez simplement l’une des deux options ; elles ne sont pas requises sur MacOS et Linux.
  4. Vous pouvez également définir la configuration manuellement avant d’effectuer l’exécution et le débogage locaux. Dans la capture d’écran précédente, sélectionnez le signe plus ( + ). Sélectionnez ensuite l’option Apache Spark on HDInsight. Entrez les informations de Nom et Nom de la classe principale à enregistrer, puis cliquez sur le bouton d’exécution locale.

Effectuer un débogage local

  1. Ouvrez le script SparkCore_wasbloTest, et définissez les points d’arrêt.

  2. Cliquez avec le bouton droit sur l’éditeur de script, puis sélectionnez l’option Debug '[Spark on HDInsight]XXX' pour effectuer le débogage local.

Effectuer une exécution à distance

  1. Accédez à Exécuter>Modifier les configurations... . Dans ce menu, vous pouvez créer ou modifier les configurations pour le débogage à distance.

  2. Dans la boîte de dialogue Run/Debug Configurations (Exécuter/Déboguer les configurations) sélectionnez le signe plus ( + ). Sélectionnez ensuite l’option Apache Spark on HDInsight.

    Intellij Add new configuration.

  3. Basculez vers l’onglet Remotely Run in Cluster (Exécuter à distance dans le cluster) . Entrez les informations sur le Nom, le Cluster Spark et le Nom principal de la classe. Cliquez ensuite sur Advanced configuration (Remote Debugging) [Configuration avancée (Débogage à distance)]. Nos outils prennent en charge le débogage avec Exécuteurs. Pour numExectors, la valeur par défaut est 5. Il est déconseillé de définir une valeur supérieure à 3.

    Intellij Run debug configurations.

  4. Dans la section Advanced Configuration (Remote Debugging) , sélectionnez Enable Spark remote debug. Entrez le nom d’utilisateur SSH, puis entrez un mot de passe ou utilisez un fichier de clé privée. Si vous souhaitez effectuer le débogage à distance, vous devez définir cette option. Par contre, cette action n’est pas nécessaire si vous souhaitez simplement utiliser l’exécution à distance.

    Intellij Advanced Configuration enable spark remote debug.

  5. La configuration est maintenant enregistrée avec le nom fourni. Pour afficher les détails de configuration, sélectionnez le nom de configuration. Pour apporter des modifications, sélectionnez Modifier les configurations.

  6. Une fois le paramétrage des configurations terminé, vous pouvez exécuter le projet sur le cluster à distance ou effectuer un débogage à distance.

    Intellij Debug Remote Spark Job Remote run button.

  7. Cliquez sur le bouton Déconnecter si les journaux d’activité d’envoi n’apparaissent pas dans le panneau gauche. Toutefois, une exécution a toujours lieu sur le serveur principal.

    Intellij Debug Remote Spark Job Remote run result.

Effectuer un débogage à distance

  1. Configurez des points de rupture, puis sélectionnez l’icône Débogage distant. La différence avec la soumission à distance est que le nom d’utilisateur/mot de passe SSH doit être configuré.

    Intellij Debug Remote Spark Job debug icon.

  2. Quand l’exécution du programme atteint le point de rupture, un onglet Pilote et deux onglets Exécuteur s’affichent dans le volet Débogueur. Sélectionnez l’icône Reprendre le programme pour continuer à exécuter le code ; le point de rupture suivant est alors atteint. Vous devez basculer vers l’onglet Exécuteur correct pour trouver l’exécuteur cible à déboguer. Vous pouvez consulter les journaux d’activité d’exécution sous l’onglet Console correspondant.

    Intellij Debug Remote Spark Job Debugging tab.

Effectuer un débogage et une résolution des bogues à distance

  1. Configurez deux points de rupture, puis sélectionnez l’icône Déboguer pour démarrer le processus de débogage à distance.

  2. Le code s’arrête au premier point de rupture et les informations sur les paramètres et les variables s’affichent dans le volet Variable.

  3. Sélectionnez l’icône Reprendre le programme pour continuer. Le code s’arrête au deuxième point. L’exception est interceptée comme prévu.

    Intellij Debug Remote Spark Job throw error.

  4. Resélectionnez l’icône Reprendre le programme. La fenêtre Soumission HDInsight Spark affiche une erreur d’exécution de tâche.

    Intellij Debug Remote Spark Job Error submission.

  5. Pour mettre à jour dynamiquement la valeur de la variable à l’aide de la fonctionnalité de débogage IntelliJ, resélectionnez Déboguer. Le volet Variables réapparaît.

  6. Cliquez avec le bouton droit de la cible de l’onglet Déboguer, puis sélectionnez Définir la valeur. Ensuite, entrez une nouvelle valeur pour la variable. Puis sélectionnez Entrer pour enregistrer la valeur.

    Intellij Debug Remote Spark Job set value.

  7. Sélectionnez l’icône Reprendre le programme pour continuer à exécuter le programme. Cette fois-ci, aucune exception n’est interceptée. Vous pouvez voir que le projet s’exécute correctement sans aucune exception.

    Intellij Debug Remote Spark Job without exception.

Étapes suivantes

Scénarios

Création et exécution d’applications

Outils et extensions

Gestion des ressources