Bekende problemen voor Apache Spark-cluster in HDInsight
In dit document worden alle bekende problemen voor de openbare preview van HDInsight Spark bijgehouden.
Apache Livy lekt interactieve sessie
Wanneer Apache Livy opnieuw wordt gestart (vanuit Apache Ambari of vanwege het opnieuw opstarten van de virtuele machine hoofdknooppunt 0) met een interactieve sessie die nog actief is, wordt er een interactieve taaksessie gelekt. Als gevolg hiervan kunnen nieuwe taken vastlopen in de status Geaccepteerd.
Oplossing:
Gebruik de volgende procedure om het probleem te omzeilen:
Ssh in hoofdknooppunt. Zie SSH-sleutels gebruiken met HDInsight voor informatie.
Voer de volgende opdracht uit om de toepassings-id's te vinden van de interactieve taken die zijn gestart via Livy.
yarn application –list
De standaardtaaknamen zijn Livy als de taken zijn gestart met een interactieve Livy-sessie zonder expliciete namen. Voor de Livy-sessie die is gestart door Jupyter Notebook, begint de taaknaam met
remotesparkmagics_*
.Voer de volgende opdracht uit om deze taken te beëindigen.
yarn application –kill <Application ID>
Nieuwe taken worden uitgevoerd.
Spark History Server is niet gestart
Spark History Server wordt niet automatisch gestart nadat een cluster is gemaakt.
Oplossing:
Start de geschiedenisserver handmatig vanuit Ambari.
Machtigingsprobleem in Spark-logboekmap
hdiuser krijgt de volgende fout bij het verzenden van een taak met behulp van spark-submit:
java.io.FileNotFoundException: /var/log/spark/sparkdriver_hdiuser.log (Permission denied)
En er wordt geen stuurprogrammalogboek geschreven.
Oplossing:
- Voeg hdiuser toe aan de Hadoop-groep.
- Geef 777 machtigingen op voor /var/log/spark na het maken van het cluster.
- Werk de locatie van het Spark-logboek bij met Behulp van Ambari om een map met 777 machtigingen te zijn.
- Voer spark-submit uit als sudo.
Spark-Phoenix-connector wordt niet ondersteund
HDInsight Spark-clusters bieden geen ondersteuning voor de Spark-Phoenix-connector.
Oplossing:
U moet in plaats daarvan de Spark-HBase-connector gebruiken. Zie How to use Spark-HBase connector (Spark-HBase-connector gebruiken) voor de instructies.
Problemen met betrekking tot Jupyter Notebooks
Hieronder volgen enkele bekende problemen met betrekking tot Jupyter Notebooks.
Notebooks met niet-ASCII-tekens in bestandsnamen
Gebruik geen niet-ASCII-tekens in Jupyter Notebook bestandsnamen. Als u probeert een bestand te uploaden via de Jupyter-gebruikersinterface, die een niet-ASCII-bestandsnaam heeft, mislukt dit zonder foutbericht. Met Jupyter kunt u het bestand niet uploaden, maar er wordt ook geen zichtbare fout gegenereerd.
Fout bij het laden van notitieblokken van grotere grootten
Er wordt mogelijk een fout weergegeven Error loading notebook
wanneer u notitieblokken laadt die groter zijn.
Oplossing:
Als u deze fout krijgt, betekent dit niet dat uw gegevens beschadigd zijn of verloren gaan. Uw notebooks bevinden zich nog steeds op de schijf in /var/lib/jupyter
en u kunt via SSH toegang krijgen tot het cluster. Zie SSH-sleutels gebruiken met HDInsight voor informatie.
Zodra u verbinding hebt gemaakt met het cluster met behulp van SSH, kunt u uw notebooks van uw cluster naar uw lokale computer kopiëren (met behulp van SCP of WinSCP) als back-up om te voorkomen dat belangrijke gegevens in het notebook verloren gaan. U kunt vervolgens een SSH-tunnel uitvoeren naar uw hoofdknooppunt op poort 8001 om toegang te krijgen tot Jupyter zonder de gateway te doorlopen. Van daaruit kunt u de uitvoer van uw notebook wissen en opnieuw opslaan om de grootte van het notitieblok te minimaliseren.
Als u wilt voorkomen dat deze fout in de toekomst optreedt, moet u enkele aanbevolen procedures volgen:
- Het is belangrijk om het notitieblok klein te houden. Alle uitvoer van uw Spark-taken die naar Jupyter wordt teruggestuurd, blijft behouden in het notebook. Het is een best practice met Jupyter in het algemeen om te voorkomen dat het wordt uitgevoerd
.collect()
op grote RDD's of dataframes. Als u in plaats daarvan de inhoud van een RDD wilt bekijken, kunt u overwegen of uit te voeren.take()
.sample()
, zodat uw uitvoer niet te groot wordt. - Wanneer u een notitieblok opslaat, wist u ook alle uitvoercellen om de grootte te verkleinen.
Het initiële opstarten van notebook duurt langer dan verwacht
De eerste code-instructie in Jupyter Notebook het gebruik van Spark-magic kan meer dan een minuut duren.
Uitleg:
Dit gebeurt omdat wanneer de eerste codecel wordt uitgevoerd. Op de achtergrond wordt hiermee de sessieconfiguratie gestart en worden spark-, SQL- en Hive-contexten ingesteld. Nadat deze contexten zijn ingesteld, wordt de eerste instructie uitgevoerd en dit geeft de indruk dat het lang duurt om de instructie te voltooien.
time-out Jupyter Notebook bij het maken van de sessie
Wanneer het Spark-cluster geen resources meer heeft, treedt er een time-out op voor de Spark- en PySpark-kernels in de Jupyter Notebook bij het maken van de sessie.
Oplossingen:
Maak enkele resources vrij in uw Spark-cluster door:
- Andere Spark-notebooks stoppen door naar het menu Sluiten en stoppen te gaan of door te klikken op Afsluiten in de Notebook Explorer.
- Andere Spark-toepassingen stoppen vanuit YARN.
Start het notitieblok dat u probeerde op te starten opnieuw. Er moeten voldoende resources beschikbaar zijn om nu een sessie te maken.
Zie ook
Scenario's
- Apache Spark met BI: interactieve gegevensanalyse uitvoeren met Behulp van Spark in HDInsight met BI-hulpprogramma's
- Apache Spark met Machine Learning: Spark in HDInsight gebruiken voor het analyseren van de gebouwtemperatuur met behulp van HVAC-gegevens
- Apache Spark met Machine Learning: Spark in HDInsight gebruiken om resultaten van voedselinspecties te voorspellen
- Analyse van websitelogboeken met Apache Spark in HDInsight
Toepassingen maken en uitvoeren
- Een zelfstandige toepassing maken met behulp van Scala
- Apache Livy gebruiken om taken op afstand uit te voeren in een Apache Spark-cluster
Tools en uitbreidingen
- De invoegtoepassing HDInsight Tools for IntelliJ IDEA gebruiken om Spark Scala-toepassingen te maken en in te dienen
- HdInsight Tools-invoegtoepassing voor IntelliJ IDEA gebruiken om externe fouten in Apache Spark-toepassingen op te sporen
- Apache Zeppelin-notebooks gebruiken met een Apache Spark-cluster in HDInsight
- Kernels die beschikbaar zijn voor Jupyter Notebook in Apache Spark-cluster voor HDInsight
- Externe pakketten gebruiken met Jupyter Notebooks
- Jupyter op uw computer installeren en verbinding maken met een HDInsight Spark-cluster