Guide till prestanda och skalbarhet för kopieringsaktiviteter
GÄLLER FÖR:
Azure Data Factory
Azure Synapse Analytics
Ibland vill du utföra en storskalig datamigrering från Data Lake eller EDW (Enterprise Data Warehouse) till Azure. Andra gånger vill du mata in stora mängder data, från olika källor till Azure, för stordataanalys. I varje fall är det viktigt att uppnå optimala prestanda och skalbarhet.
Azure Data Factory och Azure Synapse Analytics-pipelines ger en mekanism för att mata in data, med följande fördelar:
- Hanterar stora mängder data
- Har höga resultat
- Är kostnadseffektivt
Dessa fördelar passar utmärkt för datatekniker som vill skapa skalbara pipelines för datainmatning som har höga prestanda.
När du har läst den här artikeln kan du svara på följande frågor:
- Vilken nivå av prestanda och skalbarhet kan jag uppnå med hjälp av kopieringsaktivitet för datamigrering och datainmatningsscenarier?
- Vilka åtgärder ska jag vidta för att justera kopieringsaktivitetens prestanda?
- Vilka prestandaoptimeringar kan jag använda för en enskild kopieringsaktivitetskörning?
- Vilka andra externa faktorer att tänka på när du optimerar kopieringsprestanda?
Anteckning
Om du inte är bekant med kopieringsaktiviteten i allmänhet kan du läsa översikten över kopieringsaktiviteten innan du läser den här artikeln.
Kopieringsprestanda och skalbarhet som kan uppnås med hjälp Azure Data Factory och Synapse-pipelines
Azure Data Factory och Synapse-pipelines erbjuder en serverlös arkitektur som möjliggör parallellitet på olika nivåer.
Med den här arkitekturen kan du utveckla pipelines som maximerar dataförflyttningsdataflödet för din miljö. Dessa pipelines använder följande resurser fullt ut:
- Nätverksbandbredd mellan käll- och måldatalager
- Käll- eller måldatalager för in- och utdataåtgärder per sekund (IOPS) och bandbredd
Den här fullständiga användningen innebär att du kan beräkna det totala dataflödet genom att mäta det minsta tillgängliga dataflödet med följande resurser:
- Källdatalager
- Måldatalager
- Nätverksbandbredd mellan käll- och måldatalager
Tabellen nedan visar beräkningen av varaktigheten för dataförflyttning. Varaktigheten i varje cell beräknas baserat på ett visst nätverk och datalagerbandbredd och en viss datanyttolaststorlek.
Anteckning
Varaktigheten nedan är avsedd att representera prestanda som kan uppnås i en lösning för dataintegrering från end-to-end med hjälp av en eller flera prestandaoptimeringstekniker som beskrivs i Kopiera prestandaoptimeringsfunktioner ,inklusive att använda ForEach för att partitionera och skapa flera samtidiga kopieringsaktiviteter. Vi rekommenderar att du följer stegen i Prestandajusteringssteg för att optimera kopieringsprestanda för din specifika datauppsättning och systemkonfiguration. Du bör använda de siffror som erhålls i dina prestandajusteringstester för planering av produktionsdistribution, kapacitetsplanering och faktureringsprognos.
| Datastorlek/ Bandbredd |
50 Mbit/s | 100 Mbit/s | 500 Mbit/s | 1 Gbit/s | 5 Gbit/s | 10 Gbit/s | 50 Gbit/s |
|---|---|---|---|---|---|---|---|
| 1 GB | 2,7 min | 1,4 min | 0,3 min | 0,1 min | 0,03 min | 0,01 min | 0,0 min |
| 10 GB | 27,3 min | 13,7 min | 2,7 min | 1,3 min | 0,3 min | 0,1 min | 0,03 min |
| 100 GB | 4,6 timmar | 2,3 timmar | 0,5 timmar | 0,2 timmar | 0,05 timmar | 0,02 timmar | 0,0 timmar |
| 1 TB | 46,6 timmar | 23,3 timmar | 4,7 timmar | 2,3 timmar | 0,5 timmar | 0,2 timmar | 0,05 timmar |
| 10 TB | 19,4 dagar | 9,7 dagar | 1,9 dagar | 0,9 dagar | 0,2 dagar | 0,1 dagar | 0,02 dagar |
| 100 TB | 194,2 dagar | 97,1 dagar | 19,4 dagar | 9,7 dagar | 1,9 dagar | 1 dag | 0,2 dagar |
| 1 PB | 64,7 mo | 32,4 mo | 6,5 mo | 3.2 mo | 0,6 mo | 0.3 mo | 0,06 mo |
| 10 PB | 647.3 mo | 323,6 mo | 64,7 mo | 31,6 mo | 6,5 mo | 3.2 mo | 0,6 mo |
Kopiering är skalbart på olika nivåer:
Kontrollflöde kan starta flera kopieringsaktiviteter parallellt, till exempel med for Each-loop .
En enda kopieringsaktivitet kan dra nytta av skalbara beräkningsresurser.
- När du använder Azure Integration Runtime (IR) kan du ange upp till 256 dataintegreringsenheter (DI:er) för varje kopieringsaktivitet på ett serverlöst sätt.
- När du använder IR med egen värd kan du använda någon av följande metoder:
- Skala upp datorn manuellt.
- Skala ut till flera datorer (upp till 4 noder), och en enda kopieringsaktivitet partitionera filuppsättningen över alla noder.
En enda kopieringsaktivitet läser från och skriver till datalagret med flera trådar parallellt.
Prestandajusteringssteg
Vidta följande steg för att justera prestandan för din tjänst med kopieringsaktiviteten:
Hämta en testdatamängd och upprätta en baslinje.
Under utvecklingen testar du din pipeline med hjälp av kopieringsaktiviteten mot ett representativt dataexempel. Den datamängd som du väljer ska representera dina typiska datamönster längs följande attribut:
- Mappstrukturen
- Filmönster
- Dataschema
Och din datauppsättning bör vara tillräckligt stor för att utvärdera kopieringsprestanda. En bra storlek tar minst 10 minuter för kopieringsaktiviteten att slutföras. Samla in körningsinformation och prestandaegenskaper efter kopieringsaktivitetsövervakningen.
Maximera prestanda för en enskild kopieringsaktivitet:
Vi rekommenderar att du först maximerar prestanda med hjälp av en enda kopieringsaktivitet.
Om kopieringsaktiviteten körs på en Azure Integration Runtime:
Börja med standardvärden för dataintegreringsenheter (DIU) och inställningar för parallellkopiering.
Om kopieringsaktiviteten körs på en integrationskörning med egen värd:
Vi rekommenderar att du använder en dedikerad dator som värd för IR. Datorn ska vara separat från servern som är värd för datalagret. Börja med standardvärden för parallell kopiering och använd en enda nod för IR med egen värd.
Genomför en prestandatestkörning. Anteckna den prestanda som uppnås. Inkludera de faktiska värden som används, till exempel DIUs och parallella kopior. Se kopieringsaktivitetsövervakning om hur du samlar in körningsresultat och prestandainställningar som används. Lär dig hur du felsöker prestanda för kopieringsaktivitet för att identifiera och lösa flaskhalsen.
Iterera för att utföra ytterligare prestandatestkörningar enligt vägledningen för felsökning och justering. När en enskild kopieringsaktivitet inte kan uppnå ett bättre dataflöde bör du överväga om du vill maximera aggregerat dataflöde genom att köra flera kopior samtidigt. Det här alternativet beskrivs i nästa numrerade punkt.
Maximera aggregerat dataflöde genom att köra flera kopior samtidigt:
Nu har du maximerat prestandan för en enskild kopieringsaktivitet. Om du ännu inte har uppnått de övre gränserna för dataflödet i din miljö kan du köra flera kopieringsaktiviteter parallellt. Du kan köra parallellt med hjälp av kontrollflödeskonstruktioner. En sådan konstruktion är for Each-loopen. Mer information finns i följande artiklar om lösningsmallar:
Expandera konfigurationen till hela datauppsättningen.
När du är nöjd med körningsresultat och prestanda kan du expandera definitionen och pipelinen för att täcka hela datauppsättningen.
Felsöka prestanda för kopieringsaktivitet
Följ stegen för prestandajustering för att planera och utföra prestandatest för ditt scenario. Och lär dig hur du felsöker prestandaproblem för varje kopieringsaktivitetskörning i Felsöka prestanda för kopieringsaktivitet.
Optimeringsfunktioner för kopieringsprestanda
Tjänsten innehåller följande funktioner för prestandaoptimering:
- Dataintegrationsenheter
- Skalbarhet för Integration Runtime med egen värd
- Parallellkopiering
- Mellanfasad kopia
Dataintegrationsenheter
En dataintegreringsenhet (DIU) är ett mått som representerar kraften i en enda enhet i Azure Data Factory- och Synapse-pipelines. Ström är en kombination av processor, minne och nätverksresursallokering. DIU gäller endast för Azure Integration Runtime. DIU gäller inte för integration runtime med egen värd. Mer information finns här.
Skalbarhet för Integration Runtime med egen värd
Du kanske vill vara värd för en ökande samtidig arbetsbelastning. Eller så kanske du vill uppnå högre prestanda på den aktuella arbetsbelastningsnivån. Du kan förbättra bearbetningsskalan på följande sätt:
- Du kan skala upp IR med egen värd genom att öka antalet samtidiga jobb som kan köras på en nod.
Uppskalning fungerar bara om nodens processor och minne är mindre än vad som används fullt ut. - Du kan skala ut IR med egen värd genom att lägga till fler noder (datorer).
Mer information finns i:
- aktiviteten Kopiera funktioner för prestandaoptimering: Skalbarhet för Integration Runtime med egen värd
- Skapa och konfigurera en integrationskörning med egen värd: Skalningsöverväganden
Parallellkopiering
Du kan ange egenskapen parallelCopies för att ange parallellitet som du vill att kopieringsaktiviteten ska använda. Tänk på den här egenskapen som det maximala antalet trådar i kopieringsaktiviteten. Trådarna fungerar parallellt. Trådarna läser antingen från källan eller skriver till dina datalager för mottagare. Läs mer.
Mellanfasad kopia
En datakopieringsåtgärd kan skicka data direkt till mottagarens datalager. Du kan också välja att använda Blob Storage som mellanlagringslager. Läs mer.
Nästa steg
Se de andra artiklarna om kopieringsaktivitet: