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
Apache Spark-kluster i HDInsight. Anvisningar finns i Skapa Apache Spark-kluster i Azure HDInsight.
Eclipse IDE. Den här artikeln använder Eclipse IDE för Java-utvecklare.
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.
Bekräfta plugin-program
Gå till Hjälp>Eclipse Marketplace....
Välj fliken Installerad .
Du bör se minst:
- Azure Toolkit för Eclipse-versionen<>.
- Scala IDE-version<>.
Logga in till din Azure-prenumeration
Starta Eclipse IDE.
Gå till Fönstret>Visa vy>övrigt...>Logga in...
I dialogrutan Visa vy navigerar du till Azure>Azure Explorer och väljer sedan Öppna.
Högerklicka på Azure-noden i Azure Explorer och välj sedan Logga in.
I dialogrutan Azure-inloggning väljer du autentiseringsmetod, väljer Logga in och slutför inloggningsprocessen.
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 .
Från Azure Explorer går du till Azure>HDInsight för att se HDInsight Spark-kluster under din prenumeration.
Du kan ytterligare expandera en klusternamnnod för att se de resurser (till exempel lagringskonton) som är associerade med klustret.
Länka ett kluster
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
.
Högerklicka på HDInsight i Azure Explorer och välj Länka ett kluster.
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
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.
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.
Du kan se det länkade klustret under HDInsight. Nu kan du skicka ett program till det här länkade klustret.
Du kan också ta bort länken till ett kluster från Azure Explorer.
Konfigurera ett Spark Scala-projekt för ett HDInsight Spark-kluster
Från Eclipse IDE-arbetsytan väljer du Fil>nytt>projekt....
I guiden Nytt projekt väljer du HDInsight Project>Spark på HDInsight (Scala). Välj sedan Nästa.
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.
I nästa dialogruta granskar du informationen och väljer sedan Slutför.
Skapa ett Scala-program för ett HDInsight Spark-kluster
Från Package Explorer expanderar du projektet som du skapade tidigare. Högerklicka på src, välj Nytt>annat....
I dialogrutan Välj en guide väljer du Scala-guider>Scala-objekt. Välj sedan Nästa.
I dialogrutan Skapa ny fil anger du ett namn för objektet och väljer sedan Slutför. En textredigerare öppnas.
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") } }
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.
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).
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
I Azure Explorer expanderar du HDInsight, sedan Spark-klusternamnet och väljer sedan Jobb.
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.
Ö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.
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.
Välj fliken Logg för att visa loggar som används ofta, inklusive Driver Stderr, Driver Stdout och Directory 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
I Azure Explorer expanderar du HDInsight-rotnoden för att se en lista över HDInsight Spark-kluster som är tillgängliga.
Expandera klusternamnet för att se lagringskontot och standardlagringscontainern för klustret.
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
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.
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
Högerklicka på ditt Spark-klusternamn i Azure Explorer och välj sedan Öppna klusterhanteringsportalen (Ambari).
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.
Högerklicka på Azure-rotnoden i Azure Explorer och välj sedan Hantera prenumerationer.
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
Starta Eclipse och skapa ett projekt. I dialogrutan Nytt projekt gör du följande val och väljer sedan Nästa.
I guiden Nytt projekt väljer du HDInsight Project>Spark på HDInsight Local Run Sample (Scala). Välj sedan Nästa.
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.
Mallen lägger till en exempelkod (LogQuery) under mappen src som du kan köra lokalt på datorn.
Högerklicka på LogQuery.scala och välj Kör som>1 Scala-program. Utdata som detta visas på fliken Konsol :
Rollen endast läsare
När användare skickar jobb till ett kluster med behörighet som endast läsare krävs Ambari-autentiseringsuppgifter.
Länka kluster från snabbmenyn
Logga in med rollkontot endast för läsare.
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.
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.
Om klustret har länkats uppdateras HDInsight. Klustrets fas länkas.
Länka kluster genom att expandera noden Jobb
Klicka på Noden Jobb . Fönstret Nekad åtkomst till klusterjobb öppnas.
Klicka på Länka det här klustret för att länka klustret.
Länka kluster från Spark-sändningsfönstret
Skapa ett HDInsight-projekt.
Högerklicka på paketet. Välj sedan Skicka Spark-program till HDInsight.
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.
Visa lagringskonton
För kluster med behörighet som endast läsare klickar du på noden Lagringskonton , fönstret Nekad lagringsåtkomst visas.
För länkade kluster klickar du på noden Lagringskonton , fönstret Nekad lagringsåtkomst visas.
Kända problem
När du använder Länka ett kluster föreslår jag att du anger autentiseringsuppgifter för lagring.
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.
Se även
Scenarier
- Apache Spark med BI: Utföra interaktiv dataanalys med Spark i HDInsight med BI-verktyg
- Apache Spark med Machine Learning: Använda Spark i HDInsight för att analysera byggnadstemperaturen med hjälp av HVAC-data
- Apache Spark med Machine Learning: Använda Spark i HDInsight för att förutsäga resultat av livsmedelsinspektion
- Analys av webbplatsloggar med Apache Spark i HDInsight
Skapa och köra program
- Skapa ett fristående program med hjälp av Scala
- Köra jobb via fjärranslutning på ett Apache Spark-kluster med hjälp av Apache Livy
Verktyg och tillägg
- Använda Azure Toolkit for IntelliJ för att skapa och skicka Spark Scala-program
- Använda Azure Toolkit for IntelliJ för att fjärrsöka Apache Spark-program via VPN
- Använda Azure Toolkit for IntelliJ för att fjärrsöka Apache Spark-program via SSH
- Använda Apache Zeppelin-notebook-filer med ett Apache Spark-kluster i HDInsight
- Kernels tillgängliga för Jupyter Notebook i Apache Spark-kluster för HDInsight
- Använda externa paket med Jupyter Notebooks
- Installera Jupyter på datorn och ansluta till ett HDInsight Spark-kluster