Automatyczne skalowanie pul platformy Apache Spark w usłudze Azure Synapse Analytics

Funkcja automatycznego skalowania puli platformy Apache Spark dla usługi Azure Synapse Analytics automatycznie skaluje w górę i w dół liczbę węzłów w wystąpieniu klastra. Podczas tworzenia nowej puli usługi Apache Spark dla usługi Azure Synapse Analytics można ustawić minimalną i maksymalną liczbę węzłów do 200 węzłów po wybraniu autoskalowania. Wówczas funkcja automatycznego skalowania monitoruje wymagania zasobów dotyczące obciążenia i skaluje w górę lub w dół liczbę węzłów. Korzystanie z tej funkcji nie wiąże się z dodatkowymi opłatami.

Monitorowanie metryk

Automatyczne skalowanie stale monitoruje wystąpienie platformy Spark i zbiera następujące metryki:

Metryczne opis
Łączna liczba oczekujących procesorów Całkowita liczba rdzeni wymaganych do rozpoczęcia wykonywania wszystkich oczekujących zadań.
Łączna liczba oczekujących pamięci Łączna ilość pamięci (w MB) wymagana do rozpoczęcia wykonywania wszystkich oczekujących zadań.
Łączna liczba bezpłatnych procesorów CPU Suma wszystkich nieużywanych rdzeni w aktywnych węzłach.
Całkowita ilość wolnej pamięci Suma nieużywanej pamięci (w MB) w aktywnych węzłach.
Używana pamięć na węzeł Obciążenie węzła. Węzeł, na którym jest używana pamięć o pojemności 10 GB, jest traktowany pod większym obciążeniem niż proces roboczy z 2 GB używanej pamięci.

Powyższe metryki są sprawdzane co 30 sekund. Skalowanie automatyczne sprawia, że decyzje dotyczące skalowania w górę i w dół są podejmowane na podstawie tych metryk.

Warunki skalowania oparte na obciążeniu

Po wykryciu następujących warunków skalowanie automatyczne wysyła żądanie skalowania:

Skalowanie w górę Skalowanie w dół
Łączna liczba oczekujących procesorów CPU jest większa niż łączna liczba wolnych procesorów przez ponad 1 minutę. Łączna liczba oczekujących procesorów CPU jest mniejsza niż łączna ilość wolnego procesora PRZEZ ponad 2 minuty.
Łączna liczba oczekujących pamięci jest większa niż łączna ilość wolnej pamięci przez ponad 1 minutę. Łączna liczba oczekujących pamięci jest mniejsza niż łączna ilość wolnej pamięci przez ponad 2 minuty.

W przypadku skalowania w górę usługa Azure Synapse Autoscale oblicza liczbę nowych węzłów potrzebnych do spełnienia bieżących wymagań dotyczących procesora CPU i pamięci, a następnie wysyła żądanie skalowania w górę, aby dodać wymaganą liczbę węzłów.

W przypadku skalowania w dół na podstawie liczby funkcji wykonawczych, wzorców aplikacji na węzeł, bieżących wymagań dotyczących procesora CPU i pamięci autoskalowanie wysyła żądanie usunięcia określonej liczby węzłów. Usługa wykrywa również, które węzły są kandydatami do usunięcia na podstawie bieżącego wykonania zadania. Operacja skalowania w dół najpierw likwiduje węzły, a następnie usuwa je z klastra.

Uwaga

Uwaga dotycząca aktualizowania i wymuszania stosowania konfiguracji autoskalowania do istniejącej puli platformy Spark. Jeśli wymuś nowe ustawienie w witrynie Azure Portal lub ForceApplySetting w programie PowerShell , wszystkie istniejące sesje platformy Spark zostaną zakończone, a zmiany konfiguracji zostaną zastosowane natychmiast. Jeśli ta opcja nie zostanie wybrana, konfiguracja zostanie zastosowana do nowych sesji platformy Spark, a istniejące sesje nie zostaną zakończone.

Rozpocznij

Tworzenie bezserwerowej puli platformy Apache Spark przy użyciu skalowania automatycznego

Aby włączyć funkcję autoskalowania, wykonaj następujące kroki w ramach normalnego procesu tworzenia puli:

  1. Na karcie Podstawy zaznacz pole wyboru Włącz autoskalowania.

  2. Wprowadź żądane wartości dla następujących właściwości:

    • Minimalna liczba węzłów.
    • Maksymalna liczba węzłów.

Początkowa liczba węzłów będzie minimalna. Ta wartość definiuje początkowy rozmiar wystąpienia podczas jego tworzenia. Minimalna liczba węzłów nie może być mniejsza niż trzy.

Opcjonalnie można włączyć dynamiczną alokację funkcji wykonawczych w scenariuszach, w których wymagania funkcji wykonawczej są znacznie różne na różnych etapach zadania platformy Spark lub ilości przetwarzanych danych zmieniają się wraz z upływem czasu. Włączając dynamiczną alokację funkcji wykonawczych, możemy korzystać z pojemności zgodnie z potrzebami.

Po włączeniu dynamicznej alokacji umożliwia to zadanie skalowanie liczby funkcji wykonawczych w zakresie minimalnej i maksymalnej liczby określonych funkcji wykonawczych.

Platforma Apache Spark umożliwia konfigurację dynamicznej alokacji funkcji wykonawczej za pomocą kodu, jak pokazano poniżej:

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

Wartości domyślne określone za pomocą kodu zastępują wartości ustawione za pośrednictwem interfejsu użytkownika.

W tym przykładzie, jeśli zadanie wymaga tylko 2 funkcji wykonawczych, będzie używać tylko 2 funkcji wykonawczych. Gdy zadanie wymaga więcej, będzie skalować w górę do 6 funkcji wykonawczych (1 sterownik, 6 funkcji wykonawczych). Gdy zadanie nie wymaga funkcji wykonawczej, spowoduje to zlikwidowanie funkcji wykonawczych. Jeśli węzeł nie jest potrzebny, zwolni węzeł.

Uwaga

Właściwość maxExecutors zarezerwuje liczbę skonfigurowanych funkcji wykonawczych. Biorąc pod uwagę przykład, nawet jeśli używasz tylko 2, zostanie on rezerwowy 6.

W związku z tym w przypadku włączania dynamicznej alokacji funkcje wykonawcze są skalowane w górę lub w dół na podstawie wykorzystania funkcji wykonawczych. Gwarantuje to, że funkcje wykonawcze są aprowidowane zgodnie z potrzebami uruchamiania zadania.

Najlepsze rozwiązania

Rozważ opóźnienie operacji skalowania w górę lub w dół

Ukończenie operacji skalowania może potrwać od 1 do 5 minut.

Przygotowanie do skalowania w dół

Podczas procesu skalowania wystąpienia w dół skalowanie automatyczne umieszcza węzły w stanie likwidowania, aby żadne nowe funkcje wykonawcze nie mogły być uruchamiane w tym węźle.

Uruchomione zadania będą nadal działać i zakończyć. Oczekujące zadania będą czekać na zaplanowanie zgodnie z normą z mniejszą liczbą dostępnych węzłów.

Uwaga

Domyślnie parametr spark.yarn.executor.likwid.enabled ma wartość true, co umożliwia automatyczne zamykanie nie w pełni wykorzystanych węzłów w celu zoptymalizowania wydajności obliczeniowej. Jeśli preferowane jest mniej agresywne skalowanie w dół, można ustawić tę konfigurację na wartość false.

Następne kroki

Przewodnik Szybki start dotyczący konfigurowania nowej puli Platformy Spark — tworzenie puli platformy Spark