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:

  1. Ssh i huvudnoden. Mer information finns i Use SSH with HDInsight (Använda SSH med HDInsight).

  2. 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_*.

  3. 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:

  1. Lägg till hdiuser i Hadoop-gruppen.
  2. Ange 777 behörigheter för /var/log/spark när klustret har skapats.
  3. Uppdatera spark-loggplatsen med Ambari så att den är en katalog med 777 behörigheter.
  4. 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.

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/jupyteroch 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:

  1. 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.
  2. 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

Skapa och köra program

Verktyg och tillägg

Hantera resurser