Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Dit artikel bevat een overzicht van strategieën voor het optimaliseren van Apache Spark-toepassingen in Azure HDInsight.
Overzicht
U kunt de onderstaande algemene scenario's tegenkomen
- Dezelfde Spark-taak is langzamer dan voorheen in hetzelfde HDInsight-cluster
- De Spark-job is langzamer in het HDInsight-cluster dan on-premises of bij een andere serviceprovider van derden.
- De Spark-taak is langzamer in één HDI-cluster vergeleken met een ander HDI-cluster.
De prestaties van uw Apache Spark-taken zijn afhankelijk van meerdere factoren. Deze prestatiefactoren zijn onder andere:
- Hoe uw gegevens worden opgeslagen
- Hoe het cluster is geconfigureerd
- De bewerkingen die worden gebruikt bij het verwerken van de gegevens.
- Ongezonde yarn-dienst
- Geheugenbeperkingen vanwege onjuist formaat van uitvoerders en OutOfMemoryError
- Te veel taken of te weinig taken
- Scheefheid in de gegevens veroorzaakte een paar zware of trage taken.
- Taken zijn langzamer in slechte knooppunten
Stap 1: Controleren of uw yarnservice in orde is
- Ga naar de Ambari-gebruikersinterface:
- Controleren of er ResourceManager- of NodeManager-waarschuwingen zijn
- Controleer de status van de ResourceManager en de NodeManager in YARN > SAMENVATTING: Alle NodeManagers moeten zijn gestart en alleen de Actieve ResourceManager moet zijn gestart.
Controleren of de gebruikersinterface van Yarn toegankelijk is via
https://YOURCLUSTERNAME.azurehdinsight.net/yarnui/hn/cluster
Controleren of er uitzonderingen of fouten zijn in het ResourceManager-logboek
/var/log/hadoop-yarn/yarn/hadoop-yarn-resourcemanager-*.log
Zie meer informatie in Yarn Common Issues
Stap 2: Vergelijk uw nieuwe toepassingsbronnen met beschikbare yarn-resources
Ga naar >van Ambari UI, controleer HET CLUSTERGEHEUGEN in ServiceMetrics
Controleer de metrische gegevens van de yarn-wachtrij in details:
- Ga naar de Yarn-gebruikersinterface, controleer de metrische gegevens van Yarn scheduler via
https://YOURCLUSTERNAME.azurehdinsight.net/yarnui/hn/cluster/scheduler
- U kunt ook de metrische gegevens van yarn scheduler controleren via de Yarn Rest API. Bijvoorbeeld:
curl -u "xxxx" -sS -G "https://YOURCLUSTERNAME.azurehdinsight.net/ws/v1/cluster/scheduler"
. Voor ESP moet u de domeinbeheer-gebruiker gebruiken.
- Het totale aantal resources voor uw nieuwe toepassing berekenen
- Alle uitvoerdersmiddelen:
spark.executor.instances * (spark.executor.memory + spark.yarn.executor.memoryOverhead) and spark.executor.instances * spark.executor.cores
. Zie meer informatie in spark-uitvoerdersconfiguratie - ApplicationMaster
- In de clustermodus gebruikt
spark.driver.memory
enspark.driver.cores
- In de clientmodus gebruikt
spark.yarn.am.memory+spark.yarn.am.memoryOverhead
enspark.yarn.am.cores
- In de clustermodus gebruikt
Notitie
yarn.scheduler.minimum-allocation-mb <= spark.executor.memory+spark.yarn.executor.memoryOverhead <= yarn.scheduler.maximum-allocation-mb
- Vergelijk de totale resources van uw nieuwe toepassing met de beschikbare yarn-resources in de opgegeven wachtrij
Stap 3: Uw Spark-toepassing bijhouden
We moeten de onderstaande symptomen identificeren via de gebruikersinterface van Spark- of Spark-geschiedenis:
- Welke fase is traag
- Worden de totale CPU v-cores van de uitvoerder volledig benut in de Event-Timeline op het tabblad Fase?
- Als u Spark SQL gebruikt, wat is het fysieke plan in het SQL-tabblad?
- Is de DAG in één fase te lang?
- Bekijk de metrische gegevens van taken (invoergrootte, willekeurige schrijfgrootte, GC-tijd) op het tabblad Fase
Zie meer informatie in Het bewaken van uw Spark-toepassingen
Optimaliseer uw Spark-toepassing
Er zijn veel optimalisaties die u kunnen helpen deze uitdagingen te overwinnen, zoals opslaan in cache en het toestaan van scheeftrekken van gegevens.
In elk van de volgende artikelen vindt u informatie over verschillende aspecten van Spark-optimalisatie.
- Gegevensopslag optimaliseren voor Apache Spark
- Gegevensverwerking optimaliseren voor Apache Spark
- Geheugengebruik optimaliseren voor Apache Spark
- HDInsight-clusterconfiguratie optimaliseren voor Apache Spark
Spark SQL-partities optimaliseren
-
spark.sql.shuffle.partitions
is standaard 200. We kunnen ons aanpassen op basis van bedrijfsbehoeften bij het herverdelen van gegevens voor joins of aggregaties. -
spark.sql.files.maxPartitionBytes
is standaard 1G in HDI. Het maximum aantal bytes dat in één partitie moet worden verpakt bij het lezen van bestanden. Deze configuratie is alleen van kracht wanneer u bestandsbronnen zoals Parquet, JSON en ORC gebruikt. - AQE in Spark 3.0. Bekijk de uitvoering van adaptieve query's