Udostępnij za pośrednictwem


Podstawowe pojęcia dotyczące platformy Apache Spark w usłudze Azure Synapse Analytics

Apache Spark jest platformą przetwarzania równoległego, która obsługuje przetwarzanie w pamięci w celu zwiększania wydajności aplikacji do analizy danych big data. Platforma Apache Spark w usłudze Azure Synapse Analytics to jedna z implementacji platformy Apache Spark oferowanych przez firmę Microsoft w chmurze.

Usługa Azure Synapse ułatwia tworzenie i konfigurowanie możliwości platformy Spark na platformie Azure. Usługa Azure Synapse udostępnia inną implementację tych funkcji platformy Spark, które zostały opisane tutaj.

Pule zadań platformy Spark

Pula platformy Apache Spark bezserwerowa jest tworzona w witrynie Azure Portal. Jest to definicja puli Platformy Spark, która po utworzeniu wystąpienia służy do tworzenia wystąpienia platformy Spark, które przetwarza dane. Po utworzeniu puli platformy Spark istnieje tylko jako metadane, a żadne zasoby nie są używane, uruchomione lub naliczane opłaty. Pula platformy Spark ma szereg właściwości, które kontrolują charakterystykę wystąpienia platformy Spark. Te cechy obejmują, ale nie są ograniczone do nazwy, rozmiaru, zachowania skalowania, czasu wygaśnięcia.

Ponieważ nie ma żadnych dolarów ani kosztów zasobów związanych z tworzeniem pul platformy Spark, można utworzyć dowolną liczbę z dowolną liczbą różnych konfiguracji. Uprawnienia można również stosować do pul platformy Spark, umożliwiając użytkownikom dostęp tylko do niektórych, a nie innych.

Najlepszym rozwiązaniem jest utworzenie mniejszych pul platformy Spark, które mogą być używane do programowania i debugowania, a następnie większych na potrzeby uruchamiania obciążeń produkcyjnych.

Aby dowiedzieć się, jak utworzyć pulę platformy Spark i zobaczyć wszystkie ich właściwości, zobacz wprowadzenie do pul platformy Spark w usłudze Azure Synapse Analytics

Wystąpienia platformy Spark

Wystąpienia platformy Spark są tworzone podczas nawiązywania połączenia z pulą platformy Spark, tworzenia sesji i uruchamiania zadania. Ponieważ wielu użytkowników może mieć dostęp do pojedynczej puli Spark, dla każdego użytkownika, który nawiązuje połączenie, zostanie utworzone nowe wystąpienie platformy Spark.

Po przesłaniu drugiego zadania, jeśli w puli znajduje się pojemność, istniejące wystąpienie platformy Spark ma również pojemność. Następnie istniejące wystąpienie przetwarza zadanie. W przeciwnym razie, jeśli pojemność jest dostępna na poziomie puli, zostanie utworzone nowe wystąpienie platformy Spark.

Rozliczenia dla wystąpień są uruchamiane po uruchomieniu maszyn wirtualnych platformy Azure. Rozliczenia wystąpień puli platformy Spark są zatrzymywane po zmianie wystąpień puli na zakończenie. Aby uzyskać więcej informacji na temat uruchamiania i cofania przydziału maszyn wirtualnych platformy Azure, zobacz Stany i stan rozliczeń maszyn wirtualnych platformy Azure.

Przykłady

Przykład 1

  • Pulę spark o nazwie SP1 utworzysz; ma stały rozmiar klastra o rozmiarze 20 średnich węzłów
  • Przesyłasz zadanie notesu, J1, które używa 10 węzłów, wystąpienie platformy Spark, SI1 jest tworzone w celu przetworzenia zadania
  • Teraz przesyłasz kolejne zadanie J2, które używa 10 węzłów, ponieważ nadal istnieje pojemność w puli, a wystąpienie , J2, jest przetwarzane przez SI1
  • Jeśli J2 poprosił o 11 węzłów, nie byłoby pojemności w sp1 lub SI1. W takim przypadku, jeśli J2 pochodzi z notesu, zadanie zostanie odrzucone; Jeśli J2 pochodzi z zadania wsadowego, jest on kolejkowany.
  • Rozliczenia rozpoczynają się od przesłania zadania notesu J1.
    • Pula Platformy Spark jest tworzone razem z 20 średnimi węzłami, z których każda ma 8 rdzeni wirtualnych, i zwykle trwa około 3 minut. 20 x 8 = 160 rdzeni wirtualnych.
    • W zależności od dokładnego czasu uruchamiania puli platformy Spark, limitu czasu bezczynności i środowiska uruchomieniowego dwóch zadań notesu; pula prawdopodobnie będzie działać przez od 18 do 20 minut (czas tworzenia wystąpienia puli Spark + czas wykonywania zadania notesu + limit czasu bezczynności).
    • Przy założeniu, że 20-minutowe środowisko uruchomieniowe, 160 x 0,3 godz. = 48 godzin rdzeni wirtualnych.
    • Uwaga: opłaty za godziny rdzeni wirtualnych są naliczane za minutę, a ceny rdzeni wirtualnych różnią się w zależności od regionu świadczenia usługi Azure. Aby uzyskać więcej informacji, zobacz Cennik usługi Azure Synapse

Przykład 2

  • Utworzysz wywołanie puli Platformy Spark z dodatkiem SP2; ma włączone automatyczne skalowanie z co najmniej 10 do 20 średnich węzłów
  • Przesyłasz zadanie notesu J1, które używa 10 węzłów; Wystąpienie platformy Spark SI1 jest tworzone w celu przetworzenia zadania
  • Teraz przesyłasz kolejne zadanie J2, które używa 10 węzłów; ponieważ w puli nadal istnieje pojemność, wystąpienie jest skalowane automatycznie do 20 węzłów i procesów J2.
  • Rozliczenia rozpoczynają się od przesłania zadania notesu J1.
    • Pula Spark jest tworzone razem z 10 średnimi węzłami, z których każda ma 8 rdzeni wirtualnych, i zwykle trwa około 3 minut. 10 x 8, 80 rdzeni wirtualnych.
    • Podczas przesyłania J2 pula autoskaluje się przez dodanie kolejnych 10 średnich węzłów i zwykle trwa 4 minuty do automatycznego skalowania. Dodanie 10 x 8, 80 rdzeni wirtualnych dla łącznie 160 rdzeni wirtualnych.
    • W zależności od czasu uruchamiania puli Platformy Spark środowisko uruchomieniowe pierwszego zadania notesu J1, czas skalowania puli w górę, środowisko uruchomieniowe drugiego notesu i na koniec limit czasu bezczynności; Pula prawdopodobnie będzie działać z zakresu od 22 do 24 minut (czas tworzenia wystąpienia puli Spark + środowisko uruchomieniowe zadania notesu J1 na 80 rdzeni wirtualnych) + (czas automatycznego skalowania puli Spark + czas wykonywania zadań notesu J2 + limit czasu bezczynności na 160 rdzeni wirtualnych).
    • 80 rdzeni wirtualnych przez 4 minuty + 160 rdzeni wirtualnych przez 20 minut = 58,67 godzin rdzeni wirtualnych.
    • Uwaga: opłaty za godziny rdzeni wirtualnych są naliczane za minutę, a ceny rdzeni wirtualnych różnią się w zależności od regionu świadczenia usługi Azure. Aby uzyskać więcej informacji, zobacz Cennik usługi Azure Synapse

Przykład 3

  • Pulę spark o nazwie SP1 utworzysz; ma stały rozmiar klastra o rozmiarze 20 węzłów.
  • Przesyłasz zadanie notesu J1, które używa 10 węzłów; Wystąpienie platformy Spark SI1 jest tworzone w celu przetworzenia zadania.
  • Inny użytkownik U2 przesyła zadanie J3, które używa 10 węzłów; W celu przetworzenia zadania zostanie utworzone nowe wystąpienie platformy Spark SI2.
  • Teraz przesyłasz kolejne zadanie J2, które używa 10 węzłów; ponieważ nadal istnieje pojemność w puli, a wystąpienie J2 jest przetwarzane przez si1.
  • Rozliczenia zaczynają się od przesłania zadania notesu J1.
    • Pula Spark SI1 jest tworzone razem z 20 średnimi węzłami, z których każda ma 8 rdzeni wirtualnych, i zwykle trwa ok. 3 minuty. 20 x 8, 160 rdzeni wirtualnych.
    • W zależności od dokładnego czasu uruchamiania puli Platformy Spark limit czasu ide i środowisko uruchomieniowe pierwszego i trzeciego zadania notesu; Pula SI1 prawdopodobnie będzie działać przez od 18 do 20 minut (czas tworzenia wystąpienia puli Spark + czas wykonywania zadania notesu + limit czasu bezczynności).
    • Kolejna pula Platformy Spark SI2 jest tworzone razem z 20 średnimi węzłami, z których każdy ma 8 rdzeni wirtualnych i zazwyczaj trwa około 3 minut. 20 x 8, 160 rdzeni wirtualnych
    • W zależności od dokładnego czasu uruchamiania puli Platformy Spark limit czasu ide i środowisko uruchomieniowe pierwszego zadania notesu; Pula SI2 prawdopodobnie będzie działać przez od 18 do 20 minut (czas tworzenia wystąpienia puli Spark + czas wykonywania zadania notesu + limit czasu bezczynności).
    • Przy założeniu, że dwie pule działają przez 20 minut, 160 x.03 x 2 = 96 godzin rdzeni wirtualnych.
    • Uwaga: opłaty za godziny rdzeni wirtualnych są naliczane za minutę, a ceny rdzeni wirtualnych różnią się w zależności od regionu świadczenia usługi Azure. Aby uzyskać więcej informacji, zobacz Cennik usługi Azure Synapse

Limity przydziału i ograniczenia zasobów na platformie Apache Spark dla usługi Azure Synapse

Poziom obszaru roboczego

Każdy obszar roboczy usługi Azure Synapse ma domyślny limit przydziału rdzeni wirtualnych, które mogą być używane dla platformy Spark. Limit przydziału jest podzielony między limit przydziału użytkownika i limit przydziału przepływu danych, aby żaden wzorzec użycia nie spowodował wykorzystania wszystkich rdzeni wirtualnych w obszarze roboczym. Limit przydziału różni się w zależności od typu subskrypcji, ale podział między użytkownika i przepływ danych jest symetryczny. Jeśli jednak żądasz większej liczby rdzeni wirtualnych niż pozostały w obszarze roboczym, zostanie wyświetlony następujący błąd:

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

Link w komunikacie wskazuje na ten artykuł.

W poniższym artykule opisano sposób żądania zwiększenia limitu przydziału rdzeni wirtualnych obszaru roboczego.

  • Wybierz pozycję "Azure Synapse Analytics" jako typ usługi.
  • W oknie Szczegóły limitu przydziału wybierz pozycję Apache Spark (rdzeń wirtualny) na obszar roboczy

Żądanie zwiększenia pojemności za pośrednictwem witryny Azure Portal

Poziom puli platformy Spark

Podczas definiowania puli Platformy Spark skutecznie definiujesz limit przydziału dla tej puli, jeśli uruchamiasz wiele notesów, zadań lub kombinacji 2, możliwe jest wyczerpanie limitu przydziału puli. Jeśli to zrobisz, zostanie wygenerowany komunikat o błędzie

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

Aby rozwiązać ten problem, należy zmniejszyć użycie zasobów puli przed przesłaniem nowego żądania zasobu, uruchamiając notes lub zadanie.

Następne kroki