Apache Spark i Azure Machine Learning
Azure Machine Learning-integrering med Azure Synapse Analytics ger enkel åtkomst till distribuerade beräkningsresurser via Apache Spark-ramverket. Den här integreringen erbjuder följande Apache Spark-databehandlingsupplevelser:
- Serverlös Spark-beräkning
- Bifogad Synapse Spark-pool
Serverlös Spark-beräkning
Med Apache Spark-ramverket är Azure Machine Learning serverlös Spark-beräkning det enklaste sättet att utföra distribuerade databehandlingsuppgifter i Azure Machine Learning-miljön. Azure Machine Learning erbjuder ett fullständigt hanterat, serverlöst Apache Spark-beräkningskluster på begäran. Användarna kan undvika behovet av att skapa både en Azure Synapse-arbetsyta och en Synapse Spark-pool.
Användare kan definiera resurser, inklusive instanstyp och Apache Spark-körningsversion. De kan sedan använda dessa resurser för att komma åt serverlös Spark-beräkning, i Azure Machine Learning-notebook-filer, för:
- Interaktiv Utveckling av Spark-kod
- Köra maskininlärningspipelines med en Spark-komponent
- Sändning av Spark-batchjobb
Några saker att tänka på
Serverlös Spark-beräkning fungerar bra för de flesta användarscenarier som kräver snabb åtkomst till distribuerade beräkningsresurser via Apache Spark. För att fatta ett välgrundat beslut bör användarna dock ta hänsyn till fördelarna och nackdelarna med denna metod.
Fördelar:
- Inga beroenden för att skapa andra Azure-resurser för Apache Spark (Azure Synapse-infrastrukturen fungerar under huven).
- Inga nödvändiga prenumerationsbehörigheter för att skapa Azure Synapse-relaterade resurser.
- Inget behov av SQL-poolkvoter.
Nackdelar:
- Ett beständiga Hive-metaarkiv saknas. Serverlös Spark-beräkning stöder endast minnesintern Spark SQL.
- Inga tillgängliga tabeller eller databaser.
- Azure Purview-integrering saknas.
- Inga tillgängliga länkade tjänster.
- Färre datakällor och anslutningsappar.
- Ingen konfiguration på poolnivå.
- Ingen bibliotekshantering på poolnivå.
- Endast partiellt stöd för
mssparkutils
.
Konfiguration av nätverk
Om du vill använda nätverksisolering med Azure Machine Learning och serverlös Spark-beräkning använder du ett hanterat virtuellt nätverk.
Inaktivitetsperioder och nedrullningsmekanism
Vid den första starten kan en serverlös Spark-beräkningsresurs (kallstart) behöva tre till fem minuter för att starta själva Spark-sessionen. Etablering av den automatiserade serverlösa Spark-beräkningsresursen, som backas upp av Azure Synapse, orsakar den här fördröjningen. När den serverlösa Spark-beräkningen har etablerats och en Apache Spark-session startar, kommer efterföljande kodkörningar (varm start) inte att uppleva den här fördröjningen.
Spark-sessionskonfigurationen erbjuder ett alternativ som definierar en tidsgräns för sessioner (i minuter). Spark-sessionen avslutas efter en inaktivitetsperiod som överskrider den användardefinierade tidsgränsen. Om en annan Spark-session inte startar under de följande 10 minuterna avbryts resurser som har etablerats för den serverlösa Spark-beräkningen.
När den serverlösa Spark-beräkningsresursens nedrullning sker kräver inlämning av nästa jobb en kall start. Nästa visualisering visar vissa scenarier för sessions-inaktivitetsperiod och klusterrivning.
Conda-paket på sessionsnivå
En YAML-fil för Conda-beroende kan definiera många Conda-paket på sessionsnivå i en sessionskonfiguration. En session överskrider tidsgränsen om den behöver mer än 15 minuter för att installera Conda-paketen som definierats i YAML-filen. Det blir viktigt att först kontrollera om ett obligatoriskt paket redan är tillgängligt i Azure Synapse-basavbildningen. För att göra detta bör användarna besöka dessa resurser för att fastställa vilka paket som är tillgängliga i basavbildningen för den Apache Spark-version som används:
Viktigt!
Azure Synapse Runtime för Apache Spark: Meddelanden
- Azure Synapse Runtime för Apache Spark 3.2:
- EOLA-meddelandedatum: 8 juli 2023
- Supportdatum: 8 juli 2024. Efter det här datumet inaktiveras körningen.
- För fortsatt support och optimala prestanda rekommenderar vi att du migrerar till Apache Spark 3.4
Kommentar
För ett Conda-paket på sessionsnivå:
- kallstarten behöver cirka tio till femton minuter.
- Den varma starten, med samma Conda-paket, behöver ungefär en minut.
- Den varma starten, med ett annat Conda-paket, kommer också att behöva cirka tio till femton minuter.
- Om du installerar ett stort paket eller ett paket som behöver en lång installationstid kan det påverka starttiden för Spark-instansen.
- Ändring av versionen PySpark, Python, Scala/Java, .NET eller Spark stöds inte.
- Docker-avbildningar stöds inte.
Förbättra sessionens kalla starttid när du använder Conda-paket på sessionsnivå
Du kan ange konfigurationsvariabeln spark.hadoop.aml.enable_cache
till true
, för att förbättra spark-sessionens kalla starttid . Med Conda-paket på sessionsnivå tar det vanligtvis 10 till 15 minuter att starta sessionen för första gången. Efterföljande kallstarter tar dock tre till fem minuter. Definiera konfigurationsvariabeln i användargränssnittet Konfigurera session under Konfigurationsinställningar.
Bifogad Synapse Spark-pool
En Spark-pool som skapats på en Azure Synapse-arbetsyta blir tillgänglig på Azure Machine Learning-arbetsytan med den anslutna Synapse Spark-poolen. Det här alternativet kan vara lämpligt för användare som vill återanvända en befintlig Synapse Spark-pool.
En bifogad Synapse Spark-pool till en Azure Machine Learning-arbetsyta kräver fler steg innan du kan använda poolen i Azure Machine Learning för:
- Interaktiv Utveckling av Spark-kod
- Sändning av Spark-batchjobb
- Köra maskininlärningspipelines med en Spark-komponent
En ansluten Synapse Spark-pool ger åtkomst till inbyggda Azure Synapse-funktioner. Användaren ansvarar för etablering, anslutning, konfiguration och hantering av Synapse Spark-poolen.
Spark-sessionskonfigurationen för en ansluten Synapse Spark-pool erbjuder också ett alternativ för att definiera en sessionstimeout (i minuter). Tidsgränsbeteendet för sessionen liknar beskrivningen i föregående avsnitt, förutom att de associerade resurserna aldrig rivs ned efter tidsgränsen för sessionen.
Definiera Spark-klusterstorlek
I Azure Machine Learning Spark-jobb kan du definiera Spark-klusterstorleken med tre parametervärden:
- Antal utförare
- Körskärnor
- Körminne
Du bör betrakta en Azure Machine Learning Apache Spark-köre som likvärdig med Azure Spark-arbetsnoder. Ett exempel kan förklara dessa parametrar. Anta att du har definierat antalet utförare som 6 (motsvarande sex arbetsnoder), antalet körkärnor som 4 och körminnet som 28 GB. Ditt Spark-jobb har sedan åtkomst till ett kluster med totalt 24 kärnor och 168 GB minne.
Säkerställa resursåtkomst för Spark-jobb
För att få åtkomst till data och andra resurser kan ett Spark-jobb använda antingen en hanterad identitet eller en användaridentitetsgenomströmning. Den här tabellen sammanfattar de mekanismer som Spark-jobb använder för att komma åt resurser.
Spark-pool | Identiteter som stöds | Standardidentitet |
---|---|---|
Serverlös Spark-beräkning | Användaridentitet, användartilldelad hanterad identitet kopplad till arbetsytan | Användaridentitet |
Bifogad Synapse Spark-pool | Användaridentitet, användartilldelad hanterad identitet kopplad till den anslutna Synapse Spark-poolen, systemtilldelad hanterad identitet för den anslutna Synapse Spark-poolen | Systemtilldelad hanterad identitet för den anslutna Synapse Spark-poolen |
I den här artikeln beskrivs resursåtkomst för Spark-jobb. I en notebook-session förlitar sig både den serverlösa Spark-beräkningen och den anslutna Synapse Spark-poolen på användaridentitetsgenomströmning för dataåtkomst under interaktiv dataomvandling.
Kommentar
- För att säkerställa lyckad Spark-jobbkörning tilldelar du rollerna Deltagare och Lagringsblobdatadeltagare (på azure-lagringskontot som används för datainmatning och utdata) till den identitet som du ska använda för Spark-jobböverföringen.
- Om en ansluten Synapse Spark-pool pekar på en Synapse Spark-pool på en Azure Synapse-arbetsyta och arbetsytan har ett associerat hanterat virtuellt nätverk konfigurerar du en hanterad privat slutpunkt till ett lagringskonto. Den här konfigurationen hjälper till att säkerställa dataåtkomst.
Nästa steg
- Bifoga och hantera en Synapse Spark-pool i Azure Machine Learning
- Interaktiv dataomvandling med Apache Spark i Azure Machine Learning
- Skicka Spark-jobb i Azure Machine Learning
- Kodexempel för Spark-jobb med Hjälp av Azure Machine Learning CLI
- Kodexempel för Spark-jobb med Hjälp av Azure Machine Learning Python SDK