Utiliser Azure Toolkit for Eclipse afin de créer des applications Apache Spark pour un cluster HDInsight

Utilisez HDInsight Tools dans Azure Toolkit for Eclipse afin de développer des applications Apache Spark écrites en Scala et envoyez-les à un cluster Azure HDInsight Spark, directement à partir de l’environnement de développement intégré (IDE) Eclipse. Vous pouvez utiliser le plug-in HDInsight Tools de différentes manières :

  • Pour développer une application Scala Spark et l’envoyer sur un cluster HDInsight Spark.
  • Pour accéder à vos ressources de cluster Azure HDInsight Spark.
  • Pour développer et exécuter une application Scala Spark localement.

Prérequis

Installer les plug-ins nécessaires

Installer le Kit de ressources Azure pour Eclipse

Pour plus d’informations sur l’installation, voir Installation du kit de ressources Azure pour Eclipse.

Installer le plug-in Scala

Quand vous ouvrez Eclipse, HDInsight Tools détecte automatiquement si vous avez installé le plug-in Scala. Sélectionnez OK pour continuer, puis suivez les instructions pour installer le plug-in à partir de la Place de marché Eclipse. Redémarrez l’IDE une fois l’installation terminée.

Automatic installation of the Scala plug-in.

Confirmer les plug-ins

  1. Accédez à Aide>Place de marché Eclipse.

  2. Sélectionnez l’onglet Installé.

  3. Vous devez voir au moins :

    • Azure Toolkit for Eclipse <version>.
    • IDE Scala <version>.

Connectez-vous à votre abonnement Azure :

  1. Démarrez l’IDE Eclipse.

  2. Accédez à Fenêtre>Afficher la vue>Autre>Se connecter.

  3. Dans la boîte de dialogue Afficher la vue, accédez à Azure>Azure Explorer, puis sélectionnez Ouvrir.

    Apache Spark Eclipse show view.

  4. Dans Azure Explorer, cliquez avec le bouton droit sur le nœud Azure, puis sélectionnez Se connecter.

  5. Dans la boîte de dialogue Connexion à Azure, choisissez la méthode d’authentification, sélectionnez Se connecter et effectuez le processus de connexion.

    Apache Spark Eclipse Azure Sign.

  6. Une fois que vous êtes connecté, la boîte de dialogue Vos abonnements liste tous les abonnements Azure associés aux informations d’identification. Appuyez sur Sélectionner pour fermer la boîte de dialogue.

    Select Subscriptions dialog box.

  7. Dans Azure Explorer, accédez à Azure>HDInsight pour afficher les clusters HDInsight Spark figurant dans votre abonnement.

    HDInsight Spark clusters in Azure Explorer3.

  8. Vous pouvez développer davantage un nœud de nom de cluster pour voir les ressources (par exemple, les comptes de stockage) associées au cluster.

    Expanding a cluster name to see resources.

Vous pouvez lier un cluster normal en utilisant le nom d’utilisateur Ambari managé. De même, pour un cluster HDInsight joint à un domaine, vous pouvez effectuer une liaison à l’aide du domaine et du nom d’utilisateur, par exemple user1@contoso.com.

  1. Dans Azure Explorer, cliquez avec le bouton droit sur HDInsight et sélectionnez Lier un cluster.

    Azure Explorer link cluster menu.

  2. Entrez le nom du cluster, le nom d’utilisateur et le mot de passe, puis sélectionnez OK. Si vous le souhaitez, entrez un compte de stockage, une clé de stockage, puis sélectionnez un conteneur de stockage pour que l’explorateur de stockage fonctionne avec l’arborescence de gauche.

    Link New HDInsight cluster dialog.

    Remarque

    Nous utilisons la clé de stockage liée, le nom d’utilisateur et le mot de passe si le cluster est à la fois connecté sur un abonnement Azure et lié à un cluster. Azure Explorer storage accounts.

    Pour l’utilisateur clavier uniquement, lorsque le focus actuel se trouve sur Clé de stockage, vous devez utiliser Ctrl+TAB pour vous concentrer sur le champ suivant de la boîte de dialogue.

  3. Vous pouvez voir le cluster lié sous HDInsight. Vous pouvez désormais soumettre une application à ce cluster lié.

    Azure Explorer hdi linked cluster.

  4. Vous pouvez également dissocier un cluster à partir de Azure Explorer.

    Azure Explorer unlinked cluster.

Configuration d’un projet Spark Scala pour un cluster HDInsight Spark

  1. Dans l’espace de travail IDE Eclipse, sélectionnez Fichier>Nouveau>Projet.

  2. Dans l’Assistant Nouveau projet, sélectionnez Projet HDInsight>Spark sur HDInsight (Scala) . Sélectionnez ensuite Suivant.

    Selecting the Spark on HDInsight (Scala) project.

  3. Dans la boîte de dialogue New HDInsight Scala Project (Nouveau projet HDInsight Scala), indiquez les valeurs suivantes, puis sélectionnez Next (Suivant) :

    • Entrez un nom pour le projet.
    • Dans la zone JRE, vérifiez que l’option Use an execution environment JRE (Utiliser un environnement d’exécution JRE) est définie sur JavaSE-1.7 ou version ultérieure.
    • Dans la zone Bibliothèque Spark, vous pouvez choisir l’option Utiliser Maven pour configurer le kit de développement logiciel (SDK) Spark. Notre outil intègre la version correcte pour les kits de développement logiciel (SDK) Spark et Scala. Vous pouvez aussi choisir l’option Ajouter le kit SDK Spark manuellement. Téléchargez et ajoutez le kit SDK Spark manuellement.

    New HDInsight Scala Project dialog box.

  4. Dans la boîte de dialogue suivante, passez en revue les détails, puis sélectionnez Terminer.

Créer une application Scala pour un cluster HDInsight Spark

  1. Dans l’Explorateur de package, développez le projet que vous avez créé précédemment. Cliquez avec le bouton droit sur src, sélectionnez Nouveau>Autre.

  2. Dans la boîte de dialogue Sélectionner un Assistant, sélectionnez Assistants Scala>Objet Scala. Sélectionnez ensuite Suivant.

    Select a wizard Create a Scala Object.

  3. Dans la boîte de dialogue Create New File (Créer un fichier), entrez un nom pour l’objet, puis sélectionnez Finish (Terminer). Un éditeur de texte s’ouvre.

    New File Wizard Create New File.

  4. Dans l’éditeur de texte, remplacez le contenu actuel par le code ci-dessous :

    import org.apache.spark.SparkConf
    import org.apache.spark.SparkContext
    
    object MyClusterApp{
        def main (arg: Array[String]): Unit = {
        val conf = new SparkConf().setAppName("MyClusterApp")
        val sc = new SparkContext(conf)
    
        val rdd = sc.textFile("wasbs:///HdiSamples/HdiSamples/SensorSampleData/hvac/HVAC.csv")
    
        //find the rows that have only one digit in the seventh column in the CSV
        val rdd1 =  rdd.filter(s => s.split(",")(6).length() == 1)
    
        rdd1.saveAsTextFile("wasbs:///HVACOut")
        }
    }
    
  5. Exécutez l’application sur un cluster HDInsight Spark :

    a. Dans Package Explorer (Explorateur de packages), cliquez avec le bouton droit sur le nom du projet, puis sélectionnez Submit Spark Application to HDInsight (Envoyer l’application Spark à HDInsight).

    b. Dans la boîte de dialogue Spark Submission (Envoi Spark), entrez les valeurs suivantes, puis sélectionnez Submit (Envoyer) :

    • Pour Cluster Name(Nom du cluster), sélectionnez le cluster HDInsight Spark sur lequel vous souhaitez exécuter votre application.

    • Sélectionnez un artefact à partir du projet Eclipse ou choisissez-en un sur un disque dur. La valeur par défaut dépend de l’élément sur lequel vous cliquez avec le bouton droit dans l’Explorateur de package.

    • Dans la liste déroulante Main class name (Nom de la classe principale), l’Assistant Envoi affiche tous les noms des objets de votre projet. Sélectionnez-en un ou entrez-en un que vous souhaitez exécuter. Si vous avez sélectionné un artefact à partir d’un disque dur, vous devez entrer le nom de la classe principale manuellement.

    • Comme le code d’application dans cet exemple n’exige aucun argument de ligne de commande et qu’il ne référence pas de fichiers JAR ou d’autres fichiers, vous pouvez laisser les autres zones de texte vides.

      Apache Spark Submission dialog box.

  6. L’onglet Spark Submission (Envoi Spark) doit commencer à afficher la progression. Vous pouvez arrêter l’application en sélectionnant le bouton rouge dans la fenêtre Spark Submission (Envoi Spark). Vous pouvez également afficher les journaux d’activité pour cette exécution d’application spécifique en sélectionnant l’icône en forme de globe (indiquée par la zone bleue dans l’image).

    Apache Spark Submission window.

Accéder aux clusters HDInsight Spark et les gérer à l’aide de HDInsight Tools dans le kit de ressources Azure pour Eclipse

Vous pouvez effectuer diverses opérations à l’aide de HDInsight Tools, y compris en accédant à la sortie du travail.

Accéder à la vue des travaux

  1. Dans Azure Explorer, développez HDInsight puis le nom du cluster Spark, puis sélectionnez Travaux.

    Azure Explorer Eclipse job view node.

  2. Sélectionnez le nœud Travaux. Si une version Java est antérieure à la version 1.8, HDInsight Tools vous rappelle automatiquement d’installer le plug-in E(fx)clipse. Sélectionnez OK pour continuer, puis suivez l’assistant d’installation pour l’installer depuis la Place de marché Eclipse et redémarrer Eclipse.

    Install missing plugin E(fx)clipse.

  3. Ouvrez la vue des travaux à partir du nœud Tâches. Dans le volet droit, l’onglet Spark Job View (Affichage des travaux Spark) affiche toutes les applications qui ont été exécutées sur le cluster. Sélectionnez le nom de l’application pour laquelle vous souhaitez afficher plus de détails.

    Apache Eclipse view job logs details.

    Vous pouvez alors effectuer une des actions suivantes :

    • Placez le curseur sur le graphe du travail. Il affiche des informations de base sur le travail en cours d’exécution. Sélectionnez le graphe de travail ; vous pouvez voir alors les étapes et les informations générées par chaque travail.

      Apache Spark job graph stage info.

    • Sélectionnez l’onglet Journal pour afficher les journaux d’activité fréquemment utilisés, notamment les journaux d’activité Driver Stderr, Driver Stdout et Directory Info.

      Apache Spark Eclipse job log info.

    • Ouvrez l’interface utilisateur de l’historique Spark et l’interface utilisateur Apache Hadoop YARN (au niveau de l’application) en sélectionnant les liens hypertexte en haut de la fenêtre.

Accéder au conteneur de stockage du cluster

  1. Dans l’Explorateur Azure, développez le nœud racine HDInsight pour afficher la liste des clusters HDInsight Spark disponibles.

  2. Développez le nom de cluster pour voir le compte de stockage et le conteneur de stockage par défaut du cluster.

    Storage account and default storage container.

  3. Sélectionnez le nom du conteneur de stockage associé au cluster. Dans le volet droit, double-cliquez sur le dossier HVACOut. Ouvrez l’un des fichiers part- pour afficher la sortie de l’application.

Accéder au serveur d’historique Spark

  1. Dans l’Explorateur Azure, cliquez avec le bouton droit sur le nom de votre cluster Spark, puis sélectionnez Open Spark History UI (Ouvrir l’interface utilisateur de l’historique Spark). Lorsque vous y êtes invité, entrez les informations d’identification d’administrateur pour le cluster. Vous les avez spécifiées au moment de l’approvisionnement du cluster.

  2. Dans le tableau de bord du serveur d’historique Spark, utilisez le nom de l’application pour rechercher l’application que vous venez d’exécuter. Dans le code précédent, vous définissez le nom de l’application en utilisant val conf = new SparkConf().setAppName("MyClusterApp"). Le nom de votre application Spark était donc MyClusterApp.

Démarrer le portail Apache Ambari

  1. Dans l’Explorateur Azure, cliquez avec le bouton droit sur le nom de votre cluster Spark, puis sélectionnez Open Cluster Management Portal (Ambari) (Ouvrir le portail de gestion des clusters [Ambari]).

  2. Lorsque vous y êtes invité, entrez les informations d’identification d’administrateur pour le cluster. Vous les avez spécifiées au moment de l’approvisionnement du cluster.

Gérer les abonnements Azure

Par défaut, HDInsight Tools du kit de ressources Azure pour Eclipse répertorie les clusters Spark de tous vos abonnements Azure. Si nécessaire, vous pouvez spécifier les abonnements pour lesquels vous souhaitez accéder au cluster.

  1. Dans Azure Explorer, cliquez avec le bouton droit sur le nœud racine Azure, puis sélectionnez Gérer les abonnements.

  2. Dans la boîte de dialogue, décochez les cases concernant l’abonnement auquel vous ne souhaitez pas accéder, puis sélectionnez Fermer. Vous pouvez également sélectionner Se déconnecter si vous souhaitez vous déconnecter de votre abonnement Azure.

Exécuter une application Spark Scala localement

Vous pouvez utiliser HDInsight Tools du kit de ressources Azure pour Eclipse pour exécuter des applications Spark Scala localement sur votre poste de travail. En règle générale, ces applications n’ont pas besoin d’accéder aux ressources de cluster telles que le conteneur de stockage, et elles peuvent être exécutées et testées localement.

Configuration requise

Quand vous exécutez l’application Spark Scala locale sur un ordinateur Windows, vous pouvez obtenir une exception, comme l’explique le document SPARK-2356. Cette exception est liée à l’absence du fichier WinUtils.exe dans Windows.

Pour résoudre cette erreur, vous devez disposer de Winutils.exe dans un emplacement tel que C:\WinUtils\bin, puis ajouter la variable d’environnement HADOOP_HOME et définir sa valeur sur C\WinUtils.

Exécuter une application Spark Scala locale

  1. Démarrez Eclipse et créez un projet. Dans la boîte de dialogue New Project (Nouveau projet), choisissez les options suivantes, puis sélectionnez Next (Suivant).

  2. Dans l’Assistant Nouveau projet, sélectionnez Projet HDInsight>Spark on HDInsight Local Run Sample (Scala) (Exemple d’exécution locale de Spark sur HDInsight [Scala]). Sélectionnez ensuite Suivant.

    New project selects a wizard dialog.

  3. Pour fournir les détails du projet, suivez les étapes 3 à 6 indiquées dans la section précédente Configuration d’un projet Spark Scala pour un cluster HDInsight Spark.

  4. Le modèle ajoute un exemple de code (LogQuery) sous le dossier src que vous pouvez exécuter localement sur votre ordinateur.

    Location of LogQuery local scala application.

  5. Cliquez avec le bouton droit sur LogQuery.scala et sélectionnez Exécuter en tant que>1 Application Scala. Un résultat ressemblant à ce qui suit apparaît sous l’onglet Console :

    Spark application local run result.

Rôle Lecteur seul

Lorsque les utilisateurs envoient du travail à un cluster avec l’autorisation de rôle Lecteur seul, les informations d’identification Ambari sont obligatoires.

  1. Connectez-vous avec un compte membre du rôle Lecteur seul.

  2. Dans Azure Explorer, développez HDInsight pour voir les clusters HDInsight de votre abonnement. Les clusters signalés par "Role:Reader" ont uniquement l’autorisation du rôle Lecteur seul.

    HDInsight Spark clusters in Azure Explorer role reader.

  3. Cliquez avec le bouton droit de la souris sur le cluster avec l’autorisation de rôle Lecteur seul. Sélectionnez Link this cluster dans le menu contextuel pour lier le cluster. Entrez le nom d’utilisateur et le mot de passe Ambari.

    HDInsight Spark clusters in Azure Explorer link.

  4. Si le cluster est correctement lié, HDInsight est actualisé. L’étape du cluster sera reliée.

    HDInsight Spark clusters in Azure Explorer linked.

  1. Cliquez sur le nœud Jobs (Travaux). La fenêtre contextuelle Cluster Job Access Denied (Accès refusé au travail du cluster) s’ouvre alors.

  2. Cliquez sur Link this cluster pour lier le cluster.

    HDInsight Spark clusters in Azure Explorer9.

  1. Créez un projet HDInsight.

  2. Cliquez avec le bouton droit sur le package. Sélectionnez ensuite Submit Spark Application to HDInsight (Envoyer l’application Spark à HDInsight).

    HDInsight Spark clusters in Azure Explorer submit.

  3. Sélectionnez un cluster doté de l’autorisation de rôle Lecteur seul pour Nom du cluster. Un message d’avertissement s’affiche. Cliquez sur Link this cluster pour lier le cluster.

    HDInsight Spark clusters in Azure Explorer link this.

Afficher les comptes de stockage

  • Pour les clusters possédant l’autorisation de rôle Lecteur seul, cliquez sur le nœud Storage Accounts (Comptes de stockage). La fenêtre contextuelle Storage Access Denied (Accès au stockage refusé) s’ouvre alors.

    HDInsight Spark clusters in Azure Explorer storage.

    HDInsight Spark clusters in Azure Explorer denied.

  • Pour les clusters liés, cliquez sur le nœud Storage Accounts. La fenêtre contextuelle Storage Access Denied s’ouvre alors.

    HDInsight Spark clusters in Azure Explorer denied2.

Problèmes connus

Lorsque vous utilisez Lier un cluster, je vous conseille de fournir des informations d’identification de stockage.

link cluster with storage credential eclipses.

Il existe deux modes pour soumettre les travaux. Si les informations d’identification de stockage sont fournies, le mode batch sera utilisé pour soumettre le travail. Sinon, le mode interactif sera utilisé. Si le cluster est occupé, l’erreur ci-dessous risque de se produire.

eclipse get error when cluster busy.

eclipse get error when cluster busy yarn.

Voir aussi

Scénarios

Création et exécution d’applications

Outils et extensions

Gestion des ressources