Základní koncepty Apache Sparku ve službě Azure Synapse Analytics

Apache Spark je architektura paralelního zpracování, která podporuje zpracování v paměti za účelem zvýšení výkonu analytických aplikací pro velké objemy dat. Apache Spark ve službě Azure Synapse Analytics je jednou z implementací Apache Sparku v cloudu od Microsoftu.

Azure Synapse usnadňuje vytváření a konfiguraci možností Sparku v Azure. Azure Synapse poskytuje jinou implementaci těchto funkcí Sparku, které jsou zde popsané.

Fondy úloh Sparku

Na webu Azure Portal se vytvoří bezserverový fond Apache Spark. Jedná se o definici fondu Spark, který se při vytváření instancí používá k vytvoření instance Sparku, která zpracovává data. Když se vytvoří fond Sparku, existuje pouze jako metadata a žádné prostředky se spotřebovávají, neúčtují ani neúčtují. Fond Spark má řadu vlastností, které řídí charakteristiky instance Sparku. Mezi tyto charakteristiky patří název, velikost, chování škálování, doba života.

Vzhledem k tomu, že k vytváření fondů Sparku nejsou spojené žádné náklady na dolar ani zdroje, můžete vytvořit libovolný počet s libovolným počtem různých konfigurací. Oprávnění se dají použít také u fondů Sparku, což uživatelům umožňuje přístup jenom k některým a ne jiným.

Osvědčeným postupem je vytvořit menší fondy Sparku, které se dají použít pro vývoj a ladění a pak větší pro spouštění produkčních úloh.

Tady si můžete přečíst, jak vytvořit fond Sparku a zobrazit všechny jejich vlastnosti v tématu Začínáme s fondy Sparku ve službě Azure Synapse Analytics.

Instance Sparku

Instance Sparku se vytvoří, když se připojíte k fondu Sparku, vytvoříte relaci a spustíte úlohu. Protože k jednomu fondu Sparku může mít přístup více uživatelů, vytvoří se nová instance Sparku pro každého uživatele, který se připojí.

Když odešlete druhou úlohu, pokud je ve fondu kapacita, má stávající instance Sparku také kapacitu. Existující instance pak zpracuje úlohu. Pokud je kapacita dostupná na úrovni fondu, vytvoří se nová instance Sparku.

Fakturace instancí se spustí při spuštění virtuálních počítačů Azure. Fakturace instancí fondu Sparku se zastaví, když se instance fondu změní na ukončení. Další informace o tom, jak se virtuální počítače Azure spouští a uvolní, najdete v tématu Stavy a stav fakturace virtuálních počítačů Azure.

Příklady

Příklad 1

  • Vytvoříte fond Sparku s názvem SP1; má pevnou velikost clusteru 20 středních uzlů.
  • Odešlete úlohu poznámkového bloku J1, která používá 10 uzlů, instanci Sparku, vytvoří se SI1 pro zpracování úlohy.
  • Teď odešlete další úlohu J2, která používá 10 uzlů, protože fond stále má kapacitu a instanci J2 zpracovává SI1.
  • Pokud by J2 požádalo o 11 uzlů, nebyla by kapacita sp1 nebo SI1. V tomto případě, pokud J2 pochází z poznámkového bloku, pak úloha je odmítnuta; Pokud J2 pochází z dávkové úlohy, zařadí se do fronty.
  • Fakturace začíná odesláním úlohy poznámkového bloku J1.
    • Fond Sparku se vytvoří instance s 20 středními uzly, každý s 8 virtuálními jádry a obvykle trvá přibližně 3 minuty. 20 x 8 = 160 virtuálních jader.
    • V závislosti na přesné době spuštění fondu Sparku, vypršení časového limitu nečinnosti a modulu runtime dvou úloh poznámkového bloku; fond pravděpodobně poběží 18 až 20 minut (doba vytváření instancí fondu Sparku + doba běhu úlohy poznámkového bloku + časový limit nečinnosti).
    • Za předpokladu 20minutového běhu 160 x 0,3 hodiny = 48 virtuálních jader.
    • Poznámka: Hodiny virtuálních jader se účtují za minutu a ceny virtuálních jader se liší podle oblasti Azure. Další informace najdete v tématu Azure Synapse – ceny

Příklad 2

  • Vytvoříte volání fondu Spark SP2; Má povolené automatické škálování s minimálně 10 až 20 středními uzly.
  • Odešlete úlohu poznámkového bloku J1, která používá 10 uzlů; Vytvoří se instance Sparku SI1 pro zpracování úlohy.
  • Nyní odešlete další úlohu J2, která používá 10 uzlů; protože ve fondu je stále kapacita, instance automaticky škáluje na 20 uzlů a zpracovává J2.
  • Fakturace začíná odesláním úlohy poznámkového bloku J1.
    • Fond Sparku se vytvoří instance s 10 středními uzly, z nichž každý má 8 virtuálních jader a obvykle začíná přibližně 3 minuty. 10 x 8, 80 virtuálních jader.
    • Při odesílání J2 se fond automaticky škáluje přidáním dalších 10 středních uzlů a obvykle trvá 4 minuty automatického škálování. Přidání 10 × 8, 80 virtuálních jader pro celkem 160 virtuálních jader
    • V závislosti na době spuštění fondu Spark, modulu runtime první úlohy poznámkového bloku J1, času vertikálního navýšení kapacity fondu, modulu runtime druhého poznámkového bloku a nakonec vypršení časového limitu nečinnosti; Fond bude pravděpodobně běžet mezi 22 a 24 minutami (doba vytvoření instance fondu Sparku + doba vytváření instancí poznámkového bloku J1 na 80 virtuálních jader) + (doba automatického škálování fondu Sparku + doba běhu úloh poznámkového bloku J2 + časový limit nečinnosti na 160 virtuálních jader).
    • 80 virtuálních jader po dobu 4 minut + 160 virtuálních jader po dobu 20 minut = 58,67 hodin virtuálních jader.
    • Poznámka: Hodiny virtuálních jader se účtují za minutu a ceny virtuálních jader se liší podle oblasti Azure. Další informace najdete v tématu Azure Synapse – ceny

Příklad 3

  • Vytvoříte fond Sparku s názvem SP1; má pevnou velikost clusteru 20 uzlů.
  • Odešlete úlohu poznámkového bloku J1, která používá 10 uzlů; Vytvoří se instance Sparku SI1 pro zpracování úlohy.
  • Jiný uživatel U2 odešle úlohu J3, která používá 10 uzlů; Pro zpracování úlohy se vytvoří nová instance Sparku SI2.
  • Nyní odešlete další úlohu J2, která používá 10 uzlů; vzhledem k tomu, že fond stále má kapacitu a instance J2 je zpracována pomocí SI1.
  • Fakturace začíná odesláním úlohy poznámkového bloku J1.
    • Fond Spark SI1 se vytvoří instance s 20 středními uzly, každý s 8 virtuálními jádry a obvykle trvá přibližně 3 minuty. 20 x 8, 160 virtuálních jader.
    • V závislosti na přesné době spuštění fondu Sparku vypršel časový limit ide a modul runtime první a třetí úlohy poznámkového bloku; Fond SI1 se pravděpodobně spustí po dobu 18 až 20 minut (doba vytváření instancí fondu Sparku + doba spuštění úlohy poznámkového bloku + časový limit nečinnosti).
    • Další fond Spark SI2 je vytvořen s 20 středními uzly, každý s 8 virtuálními jádry a obvykle trvá přibližně 3 minuty. 20 x 8, 160 virtuálních jader
    • V závislosti na přesné době spuštění fondu Sparku vypršel časový limit ide a modul runtime první úlohy poznámkového bloku; Fond SI2 pravděpodobně běží po dobu 18 až 20 minut (doba vytváření instancí fondu Sparku + doba běhu úlohy poznámkového bloku + časový limit nečinnosti).
    • Za předpokladu, že dva fondy běží po dobu 20 minut, 160 x ,03 x 2 = 96 virtuálních jader hodin.
    • Poznámka: Hodiny virtuálních jader se účtují za minutu a ceny virtuálních jader se liší podle oblasti Azure. Další informace najdete v tématu Azure Synapse – ceny

Kvóty a omezení prostředků v Apache Sparku pro Azure Synapse

Úroveň pracovního prostoru

Každý pracovní prostor Azure Synapse má výchozí kvótu virtuálních jader, kterou je možné použít pro Spark. Kvóta se rozdělí na kvótu uživatele a kvótu toků dat tak, aby žádný z těchto vzorů využití nespotřeboval všechna virtuální jádra v pracovním prostoru. Kvóta se liší v závislosti na typu předplatného, ale mezi uživatelem a tokem dat zůstává symetrická. Pokud ale požadujete více virtuálních jader, než zbývá v pracovním prostoru, zobrazí se následující chyba:

Failed to start session: [User] MAXIMUM_WORKSPACE_CAPACITY_EXCEEDED
Your Spark job requested 480 vCores.
However, the workspace only has xxx vCores available out of quota of yyy vCores.
Try reducing the numbers of vCores requested or increasing your vCore quota. Click here for more information - https://go.microsoft.com/fwlink/?linkid=213499

Odkaz ve zprávě odkazuje na tento článek.

Následující článek popisuje, jak požádat o navýšení kvóty virtuálních jader pracovního prostoru.

  • Jako typ služby vyberte Azure Synapse Analytics.
  • V okně Podrobnosti kvóty vyberte Apache Spark (virtuální jádro) na pracovní prostor.

Vyžádání zvýšení kapacity prostřednictvím webu Azure Portal

Úroveň fondu Sparku

Při definování fondu Sparku efektivně definujete kvótu pro jednotlivé uživatele pro tento fond, pokud spouštíte více poznámkových bloků nebo úloh nebo kombinaci 2 je možné kvótu fondu vyčerpat. Pokud ano, vygeneruje se chybová zpráva.

Failed to start session: Your Spark job requested xx vCores.
However, the pool is consuming yy vCores out of available zz vCores.Try ending the running job(s) in the pool, reducing the numbers of vCores requested, increasing the pool maximum size or using another pool

Pokud chcete tento problém vyřešit, budete muset před odesláním nové žádosti o prostředek snížit využití prostředků fondu spuštěním poznámkového bloku nebo úlohy.

Další kroky