Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
In dit artikel wordt beschreven hoe u geheugenbeheer van uw Apache Spark-cluster optimaliseert voor de beste prestaties in Azure HDInsight.
Overzicht
Spark werkt door gegevens in het geheugen te plaatsen. Het beheren van geheugenresources is dus een belangrijk aspect van het optimaliseren van de uitvoering van Spark-taken. Er zijn verschillende technieken die u kunt toepassen om het geheugen van uw cluster efficiënt te gebruiken.
- Gebruik eerder kleinere gegevenspartities en houd in uw partitiestrategie rekening met gegevensgrootten, -typen, en -distributie.
- Overweeg de nieuwere, efficiëntere
Kryo data serialization, in plaats van de standaard-Java-serialisatie. - Gebruik liever YARN, omdat het in batches wordt gescheiden
spark-submit. - Bewaak Spark-configuratie-instellingen en verfijn ze.
Ter referentie worden de Spark-geheugenstructuur en enkele belangrijke geheugenparameters voor de uitvoerder weergegeven in de volgende afbeelding.
Overwegingen voor Spark-geheugen
Als u Apache Hadoop YARN gebruikt, beheert YARN het geheugen dat door alle containers op elk Spark-knooppunt wordt gebruikt. In het volgende diagram ziet u de belangrijkste objecten en hun relaties.
Probeer het volgende om berichten over onvoldoende geheugen af te handelen:
- Bekijk beheer-shuffles in DAG. Verminder door te verminderen aan de toewijzingszijde, brongegevens vooraf te partitioneren (of in buckets te plaatsen), enkele shuffles te maximaliseren, en de hoeveelheid verzonden gegevens te verminderen.
- Geef de voorkeur aan
ReduceByKeymet zijn vaste geheugenlimiet bovenGroupByKey, die aggregaties, vensters en andere functies biedt, maar het heeft een onbeperkte geheugenlimiet. - Gebruik eerder
TreeReduce, wat meer werk uitvoert met de uitvoerders of partities, in plaats vanReduce, wat al het werk uitvoert in het stuurprogramma. - Gebruik DataFrames in plaats van de RDD-objecten op lager niveau.
- Maak ComplexTypes dat acties inkapselt, zoals ‘Top N’, verschillende aggregaties of vensterbewerking.
Zie OutOfMemoryError-uitzonderingen voor Apache Spark in Azure HDInsight voor aanvullende stappen voor probleemoplossing.