Kända problem för Apache Spark-kluster i HDInsight
Det här dokumentet håller reda på alla kända problem för den offentliga förhandsversionen av HDInsight Spark.
Apache Livy läcker interaktiv session
När Apache Livy startas om (från Apache Ambari eller på grund av omstart av den virtuella datorn med huvudnod 0) med en interaktiv session som fortfarande är aktiv, läcker en interaktiv jobbsession. Därför kan nya jobb fastna i tillståndet Accepterad.
Lösningar:
Använd följande procedur för att kringgå problemet:
Ssh i huvudnoden. Mer information finns i Use SSH with HDInsight (Använda SSH med HDInsight).
Kör följande kommando för att hitta program-ID:t för de interaktiva jobb som startats via Livy.
yarn application –list
Standardjobbnamnen är Livy om jobben startades med en interaktiv Livy-session utan uttryckliga namn angivna. För Livy-sessionen som startades av Jupyter Notebook börjar jobbnamnet med
remotesparkmagics_*
.Kör följande kommando för att döda dessa jobb.
yarn application –kill <Application ID>
Nya jobb börjar köras.
Spark-historikservern har inte startats
Spark-historikservern startas inte automatiskt när ett kluster har skapats.
Lösningar:
Starta historikservern manuellt från Ambari.
Behörighetsproblem i Spark-loggkatalogen
hdiuser får följande fel när du skickar ett jobb med spark-submit:
java.io.FileNotFoundException: /var/log/spark/sparkdriver_hdiuser.log (Permission denied)
Och ingen drivrutinslogg skrivs.
Lösningar:
- Lägg till hdiuser i Hadoop-gruppen.
- Ange 777 behörigheter för /var/log/spark när klustret har skapats.
- Uppdatera spark-loggplatsen med Ambari så att den är en katalog med 777 behörigheter.
- Kör spark-submit som sudo.
Spark-Phoenix anslutningsprogram stöds inte
HDInsight Spark-kluster stöder inte Spark-Phoenix-anslutningsappen.
Lösningar:
Du måste använda Spark-HBase-anslutningsappen i stället. Anvisningarna finns i Så här använder du Spark-HBase-anslutningsprogrammet.
Problem som rör Jupyter Notebooks
Här följer några kända problem som rör Jupyter Notebooks.
Notebook-filer med icke-ASCII-tecken i filnamn
Använd inte icke-ASCII-tecken i Jupyter Notebook filnamn. Om du försöker ladda upp en fil via Jupyter-användargränssnittet, som har ett filnamn som inte är ASCII, misslyckas den utan något felmeddelande. Jupyter låter dig inte ladda upp filen, men det genererar inte heller ett synligt fel.
Fel vid inläsning av anteckningsböcker av större storlekar
Du kan se ett fel Error loading notebook
när du läser in notebook-filer som är större.
Lösningar:
Om du får det här felet betyder det inte att dina data är skadade eller förlorade. Dina notebook-filer finns fortfarande på disk i /var/lib/jupyter
och du kan SSH till klustret för att komma åt dem. Mer information finns i Use SSH with HDInsight (Använda SSH med HDInsight).
När du har anslutit till klustret med hjälp av SSH kan du kopiera dina anteckningsböcker från klustret till din lokala dator (med SCP eller WinSCP) som en säkerhetskopia för att förhindra förlust av viktiga data i notebook-filen. Du kan sedan SSH-tunnel in i huvudnoden vid port 8001 för att få åtkomst till Jupyter utan att gå via gatewayen. Därifrån kan du rensa utdata från anteckningsboken och spara om den för att minimera anteckningsbokens storlek.
För att förhindra att det här felet inträffar i framtiden måste du följa några metodtips:
- Det är viktigt att hålla anteckningsbokens storlek liten. Alla utdata från dina Spark-jobb som skickas tillbaka till Jupyter sparas i notebook-filen. Det är bästa praxis med Jupyter i allmänhet att undvika att köra
.collect()
på stora RDD:er eller dataramar. Om du i stället vill titta på innehållet i en RDD kan du överväga att köra.take()
eller.sample()
så att dina utdata inte blir för stora. - När du sparar en notebook-fil rensar du även alla utdataceller för att minska storleken.
Den första starten av notebook-filen tar längre tid än förväntat
Den första kodsatsen i Jupyter Notebook att använda Spark-magi kan ta mer än en minut.
Förklaring:
Detta beror på att när den första kodcellen körs. I bakgrunden initierar detta sessionskonfiguration och Spark-, SQL- och Hive-kontexter anges. När dessa kontexter har angetts körs den första instruktionen, vilket ger intrycket att instruktionen tog lång tid att slutföra.
Jupyter Notebook timeout när sessionen skapas
När Spark-klustret har slut på resurser överskrider Spark- och PySpark-kernels i Jupyter Notebook tidsgränsen för att försöka skapa sessionen.
Mitigations:
Frigör några resurser i Spark-klustret genom att:
- Stoppa andra Spark-notebook-filer genom att gå till menyn Stäng och stoppa eller klicka på Stäng i notebook-utforskaren.
- Stoppa andra Spark-program från YARN.
Starta om anteckningsboken som du försökte starta upp. Det ska finnas tillräckligt med resurser för att du ska kunna skapa en session nu.
Se även
Scenarier
- Apache Spark med BI: Utföra interaktiv dataanalys med Spark i HDInsight med BI-verktyg
- Apache Spark med Machine Learning: Använd Spark i HDInsight för att analysera byggnadstemperaturen med hjälp av HVAC-data
- Apache Spark med Machine Learning: Använd Spark i HDInsight för att förutsäga resultatet av livsmedelsinspektionen
- Webbplatslogganalys 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 HDInsight Tools-plugin för IntelliJ IDEA till att skapa och skicka Spark Scala-appar
- Använd HDInsight Tools-plugin-programmet för IntelliJ IDEA för att fjärrfelsöka Apache Spark-program
- 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