Automatické škálování fondů Apache Spark ve službě Azure Synapse Analytics

Funkce automatického škálování fondu Apache Sparku pro Azure Synapse Analytics zajišťuje automatické zvyšování a snižování počtu uzlů v instanci clusteru. Při vytváření nového fondu Apache Spark pro Azure Synapse Analytics je možné nastavit minimální a maximální počet uzlů až 200 uzlů při výběru automatického škálování. Automatické škálování pak bude monitorovat požadavky na prostředky při zatížení a zvyšovat nebo snižovat počet uzlů. Za tuto funkci se neúčtují žádné další poplatky.

Monitorování metrik

Automatické škálování nepřetržitě monitoruje instanci Sparku a shromažďuje následující metriky:

Metrický Popis
Celkový počet nevyřízených procesorů Celkový počet jader potřebných k zahájení provádění všech čekajících úloh.
Celková nevyřízená paměť Celková paměť (v MB) potřebná ke spuštění provádění všech čekajících úloh.
Celkový počet bezplatných procesorů Součet všech nepoužívaných jader na aktivních uzlech.
Celková paměť volného místa Součet nevyužité paměti (v MB) na aktivních uzlech.
Využitá paměť na uzel Zatížení uzlu. Uzel, na kterém se používá 10 GB paměti, se považuje za méně zatížení než pracovní proces s 2 GB využité paměti.

Výše uvedené metriky se kontrolují každých 30 sekund. Automatické škálování provádí rozhodnutí o vertikálním navýšení a snížení kapacity na základě těchto metrik.

Podmínky škálování na základě zatížení

Když se zjistí následující podmínky, automatické škálování vydá žádost o škálování:

Vertikální navýšení kapacity Vertikální snížení kapacity
Celkový počet nevyřízených procesorů je větší než celkový bezplatný procesor za více než 1 minutu. Celkový počet nevyřízených procesorů je menší než celkový bezplatný procesor za více než 2 minuty.
Celková nevyřízená paměť je větší než celková bezplatná paměť za více než 1 minutu. Celková nevyřízená paměť je menší než celková bezplatná paměť po dobu delší než 2 minuty.

Pro vertikální navýšení kapacity služba Azure Synapse Autoscale vypočítá, kolik nových uzlů je potřeba ke splnění aktuálních požadavků na procesor a paměť, a pak vydá žádost o vertikální navýšení kapacity, která přidá požadovaný počet uzlů.

V případě vertikálního snížení kapacity na základě počtu exekutorů, hlavních serverů aplikací na uzel, aktuálních požadavků na procesor a paměť, automatické škálování vydá požadavek na odebrání určitého počtu uzlů. Služba také zjistí, které uzly jsou kandidáty na odebrání, na základě aktuálního spuštění úlohy. Operace vertikálního snížení kapacity nejprve vyřadí uzly z provozu a pak je odebere z clusteru.

Poznámka:

Poznámka o aktualizaci a vynucení použití konfigurace automatického škálování u existujícího fondu Sparku Pokud je na webu Azure Portal nebo ForceApplySetting v PowerShellu povolené vynucení nového nastavení, všechny existující relace Sparku se ukončí a změny konfigurace se použijí okamžitě. Pokud tato možnost není vybraná, použije se konfigurace na nové relace Sparku a stávající relace se neukončí.

Začínáme

Vytvoření bezserverového fondu Apache Sparku s automatickým škálováním

Pokud chcete funkci automatického škálování povolit, proveďte následující kroky jako součást normálního procesu vytváření fondu:

  1. Na kartě Základy zaškrtněte políčko Povolit automatické škálování.

  2. Zadejte požadované hodnoty pro následující vlastnosti:

    • Minimální počet uzlů
    • Maximální počet uzlů

Počáteční počet uzlů bude minimální. Tato hodnota definuje počáteční velikost instance při jejím vytvoření. Minimální počet uzlů nesmí být menší než tři.

Volitelně můžete povolit dynamické přidělování exekutorů ve scénářích, kde se požadavky exekutoru výrazně liší v různých fázích úlohy Sparku nebo objem zpracovávaných dat kolísá s časem. Povolením dynamického přidělování exekutorů můžeme podle potřeby využít kapacitu.

Při povolení dynamického přidělování umožňuje úloze škálovat počet exekutorů v minimálním a maximálním počtu zadaných exekutorů.

Apache Spark umožňuje konfiguraci dynamického přidělování exekutorů prostřednictvím kódu, jak je znázorněno níže:

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

Výchozí hodnoty zadané prostřednictvím kódu přepíší hodnoty nastavené prostřednictvím uživatelského rozhraní.

Pokud vaše úloha v tomto příkladu vyžaduje pouze 2 exekutory, bude používat pouze 2 exekutory. Pokud úloha vyžaduje více, bude vertikálně navýšit kapacitu až 6 exekutorů (1 ovladač, 6 exekutorů). Pokud úloha exekutory nepotřebuje, vyřadí exekutory z provozu. Pokud uzel nepotřebujete, uvolní se uzel.

Poznámka:

MaxExecutors si rezervuje počet nakonfigurovaných exekutorů. Vzhledem k příkladu, i když použijete pouze 2, bude rezervováno 6.

Proto při povolování dynamického přidělování se exekutory vertikálně navyšte nebo dolů na základě využití exekutorů. Tím zajistíte, že exekutory budou zřízeny v souladu s potřebami spuštěné úlohy.

Osvědčené postupy

Zvažte latenci operací vertikálního navýšení nebo snížení kapacity.

Dokončení operace škálování může trvat 1 až 5 minut.

Příprava na vertikální snížení kapacity

Během procesu vertikálního snížení kapacity instance umístí automatické škálování uzly do stavu vyřazení z provozu, aby se na tomto uzlu nespustí žádné nové exekutory.

Spuštěné úlohy budou i nadále spuštěné a dokončené. Čekající úlohy budou čekat na naplánování jako normální s menším počtem dostupných uzlů.

Poznámka:

Ve výchozím nastavení je spark.yarn.executor.decommission.enabled nastaven na hodnotu true a umožňuje automatické vypnutí nevyužitých uzlů za účelem optimalizace efektivity výpočetních prostředků. Pokud je upřednostňované méně agresivní vertikální snížení kapacity, může být tato konfigurace nastavená na false.

Další kroky

Rychlý start pro nastavení nového fondu Sparku – Vytvoření fondu Sparku