Met Apache Spark GPU versnelde pools in Azure Synapse Analytics (afgeschaft)
Apache Spark is een framework voor parallelle verwerking dat ondersteuning biedt voor in-memory verwerking om de prestaties van toepassingen voor de analyse van big data te verbeteren. Apache Spark in Azure Synapse Analytics is een van de implementaties van Apache Spark van Microsoft in de cloud.
Azure Synapse biedt nu de mogelijkheid om Azure Synapse GPU-pools te maken om Spark-workloads uit te voeren met behulp van onderliggende RAPIDS-bibliotheken die gebruikmaken van de enorme parallelle verwerkingskracht van GPU's om de verwerking te versnellen. Met de RAPIDS Accelerator voor Apache Spark kunt u uw bestaande Spark-toepassingen zonder codewijziging uitvoeren door alleen een configuratie-instelling in te schakelen, die vooraf is geconfigureerd voor een pool met GPU-functionaliteit. U kunt ervoor kiezen om de GPU-versnelling op basis van RAPIDS in of uit te schakelen voor uw workload of delen van uw workload door deze configuratie in te stellen:
spark.conf.set('spark.rapids.sql.enabled','true/false')
Notitie
De preview voor azure Synapse GPU-pools is nu afgeschaft.
Let op
Melding over afschaffing en uitschakeling voor GPU's in de Azure Synapse Runtime voor Apache Spark 3.1 en 3.2
- De versnelde preview-versie van GPU is nu afgeschaft in de Apache Spark 3.2-runtime (afgeschaft). Afgeschafte runtimes hebben geen bug- en functiecorrecties. Deze runtime en de bijbehorende gpu versnelde preview op Spark 3.2 zijn vanaf 8 juli 2024 buiten gebruik gesteld en uitgeschakeld.
- De versnelde preview-versie van GPU is nu afgeschaft in de Runtime van Azure Synapse 3.1 (afgeschaft). Azure Synapse Runtime voor Apache Spark 3.1 heeft het einde van de ondersteuning bereikt vanaf 26 januari 2023, waarbij officiële ondersteuning vanaf 26 januari 2024 is stopgezet en geen verdere adressering van ondersteuningstickets, bugfixes of beveiligingsupdates meer dan deze datum.
RAPIDS Accelerator voor Apache Spark
De Spark RAPIDS-accelerator is een invoegtoepassing die werkt door het fysieke plan van een Spark-taak te overschrijven door ondersteunde GPU-bewerkingen en deze bewerkingen uit te voeren op de GPU's, waardoor de verwerking wordt versneld. Deze bibliotheek is momenteel beschikbaar als preview-versie en biedt geen ondersteuning voor alle Spark-bewerkingen (hier volgt een lijst met momenteel ondersteunde operators en er wordt stapsgewijs meer ondersteuning toegevoegd via nieuwe releases).
Opties voor clusterconfiguratie
De RAPIDS Accelerator-invoegtoepassing biedt alleen ondersteuning voor een een-op-een-toewijzing tussen GPU's en uitvoerders. Dit betekent dat een Spark-taak uitvoerders en stuurprogrammaresources moet aanvragen die kunnen worden ondergebracht door de poolresources (afhankelijk van het aantal beschikbare GPU- en CPU-kernen). Om aan deze voorwaarde te voldoen en ervoor te zorgen dat alle poolbronnen optimaal worden gebruikt, hebben we de volgende configuratie van stuurprogramma's en uitvoerders nodig voor een Spark-toepassing die wordt uitgevoerd op pools met GPU:
Poolgrootte | Opties voor stuurprogrammagrootte | Stuurprogrammakernen | Stuurprogrammageheugen (GB) | Uitvoerderskernen | Uitvoerprogrammageheugen (GB) | Aantal uitvoerders |
---|---|---|---|---|---|---|
GPU-groot | Klein stuurprogramma | 4 | 30 | 12 | 60 | Aantal knooppunten in pool |
GPU-groot | Gemiddeld stuurprogramma | 7 | 30 | 9 | 60 | Aantal knooppunten in pool |
GPU-XLarge | Gemiddeld stuurprogramma | 8 | 40 | 14 | 80 | 4 * Aantal knooppunten in pool |
GPU-XLarge | Groot stuurprogramma | 12 | 40 | 13 | 80 | 4 * Aantal knooppunten in pool |
Elke workload die niet aan een van de bovenstaande configuraties voldoet, wordt niet geaccepteerd. Dit wordt gedaan om ervoor te zorgen dat Spark-taken worden uitgevoerd met de meest efficiënte en performante configuratie die gebruikmaakt van alle beschikbare resources in de pool.
De gebruiker kan de bovenstaande configuratie instellen via hun workload. Voor notebooks kan de gebruiker de %%configure
magic-opdracht gebruiken om een van de bovenstaande configuraties in te stellen, zoals hieronder wordt weergegeven.
Gebruik bijvoorbeeld een grote pool met drie knooppunten:
%%configure -f
{
"driverMemory": "30g",
"driverCores": 4,
"executorMemory": "60g",
"executorCores": 12,
"numExecutors": 3
}
Een spark-voorbeeldtaak uitvoeren via notebook in een met Azure Synapse GPU versnelde pool
Het is handig om vertrouwd te zijn met de basisconcepten van het gebruik van een notebook in Azure Synapse Analytics voordat u verdergaat met deze sectie. Laten we de stappen doorlopen voor het uitvoeren van een Spark-toepassing die GEBRUIKMAAKT van GPU-versnelling. U kunt een Spark-toepassing schrijven in alle vier de talen die worden ondersteund in Synapse, PySpark (Python), Spark (Scala), SparkSQL en .NET voor Spark (C#).
Maak een groep met GPU-functionaliteit.
Maak een notebook en koppel deze aan de pool met GPU die u in de eerste stap hebt gemaakt.
Stel de configuraties in zoals uitgelegd in de vorige sectie.
Maak een voorbeeldgegevensframe door de onderstaande code in de eerste cel van uw notebook te kopiëren:
import org.apache.spark.sql.types.{IntegerType, StringType, StructField, StructType}
import org.apache.spark.sql.Row
import scala.collection.JavaConversions._
val schema = StructType( Array(
StructField("emp_id", IntegerType),
StructField("name", StringType),
StructField("emp_dept_id", IntegerType),
StructField("salary", IntegerType)
))
val emp = Seq(Row(1, "Smith", 10, 100000),
Row(2, "Rose", 20, 97600),
Row(3, "Williams", 20, 110000),
Row(4, "Jones", 10, 80000),
Row(5, "Brown", 40, 60000),
Row(6, "Brown", 30, 78000)
)
val empDF = spark.createDataFrame(emp, schema)
- Laten we nu een aggregaties uitvoeren door het maximale salaris per afdelings-id op te halen en het resultaat weer te geven:
- U kunt de bewerkingen in uw query zien die zijn uitgevoerd op GPU's door naar het SQL-plan te kijken via de Spark History Server:
Uw toepassing afstemmen op GPU's
De meeste Spark-taken kunnen verbeterde prestaties zien door configuratie-instellingen van standaardinstellingen af te stemmen en hetzelfde geldt voor taken die gebruikmaken van de RAPIDS Accelerator-invoegtoepassing voor Apache Spark.
Quota en resourcebeperkingen in pools met GPU met Azure Synapse
Niveau van de werkruimte
Elke Azure Synapse-werkruimte wordt geleverd met een standaardquotum van 50 GPU-vCores. Als u het quotum van GPU-kernen wilt verhogen, dient u een ondersteuningsaanvraag in via Azure Portal.