Share via


Skala Apache Spark-pooler för Azure Synapse Analytics automatiskt

Funktionen för automatisk skalning i Apache Spark för Azure Synapse Analytics-poolen skalar automatiskt antalet noder i en klusterinstans uppåt och nedåt. När en ny Apache Spark för Azure Synapse Analytics-pool skapas kan ett minsta och högsta antal noder, upp till 200 noder, ställas in när autoskalning väljs. Autoskalningen övervakar sedan resurskraven för belastningen och skalar antalet noder uppåt eller nedåt. Inga extra kostnader tillkommer för den här funktionen.

Måttövervakning

Autoskalning övervakar kontinuerligt Spark-instansen och samlar in följande mått:

Mätvärde Beskrivning
Total väntande PROCESSOR Det totala antalet kärnor som krävs för att starta körningen av alla väntande jobb.
Totalt väntande minne Det totala minne (i MB) som krävs för att starta körningen av alla väntande jobb.
Total kostnadsfri PROCESSOR Summan av alla oanvända kärnor på de aktiva noderna.
Totalt ledigt minne Summan av oanvänt minne (i MB) på de aktiva noderna.
Använt minne per nod Belastningen på en nod. En nod där 10 GB minne används anses vara under mer belastning än en arbetare med 2 GB använt minne.

Ovanstående mått kontrolleras var 30:e sekund. Autoskalning fattar beslut om uppskalning och nedskalning baserat på dessa mått.

Belastningsbaserade skalningsvillkor

När följande villkor identifieras utfärdar autoskalning en skalningsbegäran:

Skala upp Skala ned
Den totala väntande processorn är större än den totala kostnadsfria processorn i mer än 1 minut. Den totala väntande processorn är mindre än den totala kostnadsfria processorn i mer än 2 minuter.
Totalt väntande minne är större än det totala lediga minnet i mer än 1 minut. Totalt väntande minne är mindre än totalt ledigt minne i mer än 2 minuter.

Vid uppskalning beräknar Azure Synapse Autoscale-tjänsten hur många nya noder som behövs för att uppfylla de aktuella processor- och minneskraven och utfärdar sedan en uppskalningsbegäran för att lägga till det antal noder som krävs.

För nedskalning, baserat på antalet utförare, programhanterare per nod, aktuella processor- och minneskrav, utfärdar Autoskalning en begäran om att ta bort ett visst antal noder. Tjänsten identifierar också vilka noder som är kandidater för borttagning baserat på aktuell jobbkörning. Skalningsåtgärden inaktiverar först noderna och tar sedan bort dem från klustret.

Kommentar

En anteckning om att uppdatera och framtvinga att autoskalningskonfiguration tillämpas på en befintlig Spark-pool. Om Tvinga ny inställning i Azure-portalen eller ForceApplySetting i PowerShell är aktiverad avslutas alla befintliga Spark-sessioner och konfigurationsändringar tillämpas omedelbart. Om det här alternativet inte är markerat tillämpas konfigurationen på de nya Spark-sessionerna och befintliga sessioner avslutas inte.

Kom igång

Skapa en serverlös Apache Spark-pool med automatisk skalning

Om du vill aktivera funktionen Autoskalning utför du följande steg som en del av den normala processen för att skapa pooler:

  1. På fliken Grundläggande väljer du kryssrutan Aktivera autoskalning .

  2. Ange önskade värden för följande egenskaper:

    • Minsta antal noder.
    • Maximalt antal noder.

Det initiala antalet noder är det minsta antalet. Det här värdet definierar instansens ursprungliga storlek när den skapas. Det minsta antalet noder får inte vara mindre än tre.

Du kan också aktivera dynamisk allokering av utförare i scenarier där körkraven skiljer sig avsevärt mellan olika steg i ett Spark-jobb eller mängden data som bearbetas varierar med tiden. Genom att aktivera dynamisk allokering av körbara filer kan vi använda kapacitet efter behov.

När dynamisk allokering aktiveras kan jobbet skala antalet utförare inom min och maximalt antal köre som angetts.

Apache Spark möjliggör konfiguration av dynamisk allokering av körbara filer via kod enligt nedan:

    %%configure -f
    {
        "conf" : {
            "spark.dynamicAllocation.maxExecutors" : "6",
            "spark.dynamicAllocation.enabled": "true",
            "spark.dynamicAllocation.minExecutors": "2"
     }
    }

Standardvärdena som anges via koden åsidosätter de värden som anges via användargränssnittet.

I det här exemplet, om jobbet bara kräver 2 utförare, kommer det endast att använda 2 köre. När jobbet kräver mer skalas upp till 6 exekutorer (1 drivrutin, 6 exekutorer). När jobbet inte behöver utförarna inaktiveras körarna. Om noden inte behövs frigörs noden.

Kommentar

MaxExecutors reserverar antalet konfigurerade utförare. Med tanke på exemplet, även om du bara använder 2, reserveras 6.

Vid aktivering av dynamisk allokering skalar utförare därför upp eller ned baserat på användningen av körarna. Detta säkerställer att utförarna etableras i enlighet med behoven för det jobb som körs.

Bästa praxis

Överväg svarstiden för upp- eller nedskalningsåtgärder

Det kan ta 1 till 5 minuter för en skalningsåtgärd att slutföras.

Förbereda för nedskalning

Under instansskalningsprocessen förser Autoskalning noderna i inaktiverat tillstånd så att inga nya körbara filer kan starta på noden.

De jobb som körs fortsätter att köras och slutföras. Väntande jobb väntar på att schemaläggas som vanligt med färre tillgängliga noder.

Kommentar

Som standard är spark.yarn.executor.decommission.enabled inställt på sant, vilket gör det möjligt att automatiskt stänga av underutnyttjade noder för att optimera beräkningseffektiviteten. Om mindre aggressiv nedskalning föredras kan den här konfigurationen anges till false.

Nästa steg

Snabbstart för att konfigurera en ny Spark-pool Skapa en Spark-pool