Share via


Optimalisatie van geheugengebruik voor Apache Spark

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.

YARN Spark-geheugenbeheer.

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 ReduceByKey met zijn vaste geheugenlimiet boven GroupByKey, 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 van Reduce, 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.

Volgende stappen