Använda Azure Toolkit for Eclipse för att skapa Apache Spark-program för ett HDInsight-kluster

Använd HDInsight Tools i Azure Toolkit for Eclipse för att utveckla Apache Spark-program som skrivits i Scala och skicka dem till ett Azure HDInsight Spark-kluster direkt från Eclipse IDE. Du kan använda plugin-programmet HDInsight Tools på några olika sätt:

  • Utveckla och skicka ett Scala Spark-program i ett HDInsight Spark-kluster.
  • För att få åtkomst till dina Azure HDInsight Spark-klusterresurser.
  • Utveckla och köra ett Scala Spark-program lokalt.

Förutsättningar

Installera nödvändiga plugin-program

Installera Azure Toolkit for Eclipse

Installationsinstruktioner finns i Installera Azure Toolkit for Eclipse.

Installera Scala-plugin-programmet

När du öppnar Eclipse identifierar HDInsight Tools automatiskt om du har installerat Scala-plugin-programmet. Välj OK för att fortsätta och följ sedan anvisningarna för att installera plugin-programmet från Eclipse Marketplace. Starta om IDE när installationen är klar.

Automatic installation of the Scala plug-in.

Bekräfta plugin-program

  1. Gå till Hjälp>Eclipse Marketplace....

  2. Välj fliken Installerad .

  3. Du bör se minst:

    • Azure Toolkit för Eclipse-versionen<>.
    • Scala IDE-version<>.

Logga in till din Azure-prenumeration

  1. Starta Eclipse IDE.

  2. Gå till Fönstret>Visa vy>övrigt...>Logga in...

  3. I dialogrutan Visa vy navigerar du till Azure>Azure Explorer och väljer sedan Öppna.

    Apache Spark Eclipse show view.

  4. Högerklicka på Azure-noden i Azure Explorer och välj sedan Logga in.

  5. I dialogrutan Azure-inloggning väljer du autentiseringsmetod, väljer Logga in och slutför inloggningsprocessen.

    Apache Spark Eclipse Azure Sign.

  6. När du har loggat in visas alla Azure-prenumerationer som är associerade med autentiseringsuppgifterna i dialogrutan Dina prenumerationer . Stäng dialogrutan genom att trycka på Välj .

    Select Subscriptions dialog box.

  7. Från Azure Explorer går du till Azure>HDInsight för att se HDInsight Spark-kluster under din prenumeration.

    HDInsight Spark clusters in Azure Explorer3.

  8. Du kan ytterligare expandera en klusternamnnod för att se de resurser (till exempel lagringskonton) som är associerade med klustret.

    Expanding a cluster name to see resources.

Du kan länka ett normalt kluster med hjälp av det hanterade användarnamnet för Ambari. På samma sätt kan du för ett domänanslutet HDInsight-kluster länka med hjälp av domänen och användarnamnet, till exempel user1@contoso.com.

  1. Högerklicka HDInsight i Azure Explorer och välj Länka ett kluster.

    Azure Explorer link cluster menu.

  2. Ange klusternamn, användarnamn och lösenord och välj sedan OK. Du kan också ange lagringskonto, lagringsnyckel och sedan välja Lagringscontainer för lagringsutforskaren för att fungera i den vänstra trädvyn

    Link New HDInsight cluster dialog.

    Kommentar

    Vi använder den länkade lagringsnyckeln, användarnamnet och lösenordet om klustret både loggade i Azure-prenumerationen och länkade ett kluster. Azure Explorer storage accounts.

    När det aktuella fokuset ligger på Lagringsnyckel måste du använda Ctrl+TAB för att fokusera på nästa fält i dialogrutan.

  3. Du kan se det länkade klustret under HDInsight. Nu kan du skicka ett program till det här länkade klustret.

    Azure Explorer hdi linked cluster.

  4. Du kan också ta bort länken till ett kluster från Azure Explorer.

    Azure Explorer unlinked cluster.

Konfigurera ett Spark Scala-projekt för ett HDInsight Spark-kluster

  1. Från Eclipse IDE-arbetsytan väljer du Fil>nytt>projekt....

  2. I guiden Nytt projekt väljer du HDInsight Project>Spark på HDInsight (Scala). Välj sedan Nästa.

    Selecting the Spark on HDInsight (Scala) project.

  3. I dialogrutan Nytt HDInsight Scala-projekt anger du följande värden och väljer sedan Nästa:

    • Ange ett namn för projektet.
    • I JRE-området kontrollerar du att Använd en körningsmiljö JRE är inställd på JavaSE-1.7 eller senare.
    • I området Spark-bibliotek kan du välja Använd Maven för att konfigurera Spark SDK-alternativet. Vårt verktyg integrerar rätt version för Spark SDK och Scala SDK. Du kan också välja alternativet Lägg till Spark SDK manuellt , ladda ned och lägga till Spark SDK manuellt.

    New HDInsight Scala Project dialog box.

  4. I nästa dialogruta granskar du informationen och väljer sedan Slutför.

Skapa ett Scala-program för ett HDInsight Spark-kluster

  1. Från Package Explorer expanderar du projektet som du skapade tidigare. Högerklicka på src, välj Nytt>annat....

  2. I dialogrutan Välj en guide väljer du Scala-guider>Scala-objekt. Välj sedan Nästa.

    Select a wizard Create a Scala Object.

  3. I dialogrutan Skapa ny fil anger du ett namn för objektet och väljer sedan Slutför. En textredigerare öppnas.

    New File Wizard Create New File.

  4. Ersätt det aktuella innehållet med koden nedan i textredigeraren:

    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. Kör programmet på ett HDInsight Spark-kluster:

    a. Högerklicka på projektnamnet i Paketutforskaren och välj sedan Skicka Spark-program till HDInsight.

    b. I dialogrutan Spark-sändning anger du följande värden och väljer sedan Skicka:

    • Som Klusternamn väljer du det HDInsight Spark-kluster som du vill köra programmet på.

    • Välj en artefakt från Eclipse-projektet eller välj en från en hårddisk. Standardvärdet beror på det objekt som du högerklickar på från Package Explorer.

    • I listrutan Main class name (Huvudklassnamn) visar guiden skicka alla objektnamn från projektet. Välj eller ange en som du vill köra. Om du har valt en artefakt från en hårddisk måste du ange huvudklassnamnet manuellt.

    • Eftersom programkoden i det här exemplet inte kräver några kommandoradsargument eller referens-JAR:er eller filer kan du lämna de återstående textrutorna tomma.

      Apache Spark Submission dialog box.

  6. Fliken Spark-överföring bör börja visa förloppet. Du kan stoppa programmet genom att välja den röda knappen i fönstret Spark-överföring . Du kan också visa loggarna för den här specifika programkörningen genom att välja jordglobsikonen (som anges av den blå rutan i bilden).

    Apache Spark Submission window.

Få åtkomst till och hantera HDInsight Spark-kluster med hjälp av HDInsight-verktyg i Azure Toolkit for Eclipse

Du kan utföra olika åtgärder med hjälp av HDInsight Tools, inklusive åtkomst till jobbutdata.

Få åtkomst till jobbvyn

  1. I Azure Explorer expanderar du HDInsight, sedan Spark-klusternamnet och väljer sedan Jobb.

    Azure Explorer Eclipse job view node.

  2. Välj noden Jobb . Om Java-versionen är lägre än 1,8 påminner HDInsight Tools automatiskt om att du installerar plugin-programmet E(fx)clipse . Välj OK för att fortsätta och följ sedan guiden för att installera den från Eclipse Marketplace och starta om Eclipse.

    Install missing plugin E(fx)clipse.

  3. Öppna jobbvyn från noden Jobb . I den högra rutan visar fliken Spark-jobbvy alla program som kördes i klustret. Välj namnet på programmet som du vill se mer information för.

    Apache Eclipse view job logs details.

    Du kan sedan vidta någon av följande åtgärder:

    • Hovra på jobbdiagrammet. Den visar grundläggande information om det jobb som körs. Välj jobbdiagrammet så kan du se de faser och den information som varje jobb genererar.

      Apache Spark job graph stage info.

    • Välj fliken Logg för att visa loggar som används ofta, inklusive Driver Stderr, Driver Stdout och Directory Info.

      Apache Spark Eclipse job log info.

    • Öppna användargränssnittet för Spark-historik och Apache Hadoop YARN-användargränssnittet (på programnivå) genom att välja hyperlänkarna överst i fönstret.

Få åtkomst till lagringscontainern för klustret

  1. I Azure Explorer expanderar du HDInsight-rotnoden för att se en lista över HDInsight Spark-kluster som är tillgängliga.

  2. Expandera klusternamnet för att se lagringskontot och standardlagringscontainern för klustret.

    Storage account and default storage container.

  3. Välj namnet på lagringscontainern som är associerat med klustret. Dubbelklicka på mappen HVACOut i den högra rutan. Öppna en av delfilerna för att se utdata för programmet.

Få åtkomst till Spark-historikservern

  1. I Azure Explorer högerklickar du på ditt Spark-klusternamn och väljer sedan Öppna Spark-historikgränssnittet. När du uppmanas att göra det anger du autentiseringsuppgifterna för administratören för klustret. Du angav dessa när du etablerade klustret.

  2. På instrumentpanelen för Spark-historikservern använder du programnamnet för att leta efter det program som du precis har kört. I föregående kod anger du programnamnet med hjälp val conf = new SparkConf().setAppName("MyClusterApp")av . Så ditt Spark-programnamn var MyClusterApp.

Starta Apache Ambari-portalen

  1. Högerklicka på ditt Spark-klusternamn i Azure Explorer och välj sedan Öppna klusterhanteringsportalen (Ambari).

  2. När du uppmanas att göra det anger du autentiseringsuppgifterna för administratören för klustret. Du angav dessa när du etablerade klustret.

Hantera Azure-prenumerationer

Som standard listar HDInsight-verktyget i Azure Toolkit for Eclipse Spark-klustren från alla dina Azure-prenumerationer. Om det behövs kan du ange de prenumerationer som du vill komma åt klustret för.

  1. Högerklicka på Azure-rotnoden i Azure Explorer och välj sedan Hantera prenumerationer.

  2. I dialogrutan avmarkerar du kryssrutorna för den prenumeration som du inte vill komma åt och väljer sedan Stäng. Du kan också välja Logga ut om du vill logga ut från din Azure-prenumeration.

Köra ett Spark Scala-program lokalt

Du kan använda HDInsight Tools i Azure Toolkit for Eclipse för att köra Spark Scala-program lokalt på din arbetsstation. Dessa program behöver vanligtvis inte åtkomst till klusterresurser, till exempel en lagringscontainer, och du kan köra och testa dem lokalt.

Förutsättning

När du kör det lokala Spark Scala-programmet på en Windows-dator kan du få ett undantag enligt beskrivningen i SPARK-2356. Det här undantaget beror på att WinUtils.exe saknas i Windows.

För att lösa det här felet behöver du Winutils.exe till en plats som C:\WinUtils\bin och sedan lägga till miljövariabeln HADOOP_HOME och ange värdet för variabeln till C\WinUtils.

Köra ett lokalt Spark Scala-program

  1. Starta Eclipse och skapa ett projekt. I dialogrutan Nytt projekt gör du följande val och väljer sedan Nästa.

  2. I guiden Nytt projekt väljer du HDInsight Project>Spark på HDInsight Local Run Sample (Scala). Välj sedan Nästa.

    New project selects a wizard dialog.

  3. Om du vill ange projektinformation följer du steg 3 till och med 6 från det tidigare avsnittet Konfigurera ett Spark Scala-projekt för ett HDInsight Spark-kluster.

  4. Mallen lägger till en exempelkod (LogQuery) under mappen src som du kan köra lokalt på datorn.

    Location of LogQuery local scala application.

  5. Högerklicka på LogQuery.scala och välj Kör som>1 Scala-program. Utdata som detta visas på fliken Konsol :

    Spark application local run result.

Rollen endast läsare

När användare skickar jobb till ett kluster med behörighet som endast läsare krävs Ambari-autentiseringsuppgifter.

  1. Logga in med rollkontot endast för läsare.

  2. Från Azure Explorer expanderar du HDInsight för att visa HDInsight-kluster som finns i din prenumeration. Klustren som är märkta "Role:Reader" har endast behörighet som endast läsare.

    HDInsight Spark clusters in Azure Explorer role reader.

  3. Högerklicka på klustret med behörighet som endast läsare. Välj Länka det här klustret från snabbmenyn för att länka kluster. Ange Ambari-användarnamnet och lösenordet.

    HDInsight Spark clusters in Azure Explorer link.

  4. Om klustret har länkats uppdateras HDInsight. Klustrets fas länkas.

    HDInsight Spark clusters in Azure Explorer linked.

  1. Klicka på Noden Jobb . Fönstret Nekad åtkomst till klusterjobb öppnas.

  2. Klicka på Länka det här klustret för att länka klustret.

    HDInsight Spark clusters in Azure Explorer9.

  1. Skapa ett HDInsight-projekt.

  2. Högerklicka på paketet. Välj sedan Skicka Spark-program till HDInsight.

    HDInsight Spark clusters in Azure Explorer submit.

  3. Välj ett kluster som har behörighet som endast läsare för klusternamn. Varningsmeddelandet visas. Du kan klicka på Länka det här klustret för att länka klustret.

    HDInsight Spark clusters in Azure Explorer link this.

Visa lagringskonton

  • För kluster med behörighet som endast läsare klickar du på noden Lagringskonton , fönstret Nekad lagringsåtkomst visas.

    HDInsight Spark clusters in Azure Explorer storage.

    HDInsight Spark clusters in Azure Explorer denied.

  • För länkade kluster klickar du på noden Lagringskonton , fönstret Nekad lagringsåtkomst visas.

    HDInsight Spark clusters in Azure Explorer denied2.

Kända problem

När du använder Länka ett kluster föreslår jag att du anger autentiseringsuppgifter för lagring.

link cluster with storage credential eclipses.

Det finns två lägen för att skicka jobben. Om lagringsautentiseringsuppgifter tillhandahålls används batchläge för att skicka jobbet. Annars används interaktivt läge. Om klustret är upptaget kan du få felet nedan.

eclipse get error when cluster busy.

eclipse get error when cluster busy yarn.

Se även

Scenarier

Skapa och köra program

Verktyg och tillägg

Hantera resurser