Usługa zarządzana dla Apache Spark

1. Wprowadzenie do usługi zarządzanej dla Apache Spark

Usługa zarządzana dla Apache Spark to w pełni zarządzana i wysoce skalowalna usługa do uruchamiania Apache Spark, Apache Flink, Presto oraz wielu innych narzędzi i platform open source. Możesz wykorzystać usługę zarządzaną dla Apache Spark do modernizacji jezior danych, realizacji procesów ETL / ELT i bezpiecznego badania danych na globalną skalę. Usługa zarządzana dla Apache Spark jest też w pełni zintegrowana z kilkoma usługami Google Cloud, w tym BigQuery, Cloud Storage, Gemini Enterprise Agent Engine i Knowledge Catalog.

Usługa zarządzana dla Apache Spark jest dostępna w 2 trybach wdrażania:

  • Zarządzana usługa Apache Spark bez serwera umożliwia uruchamianie zadań PySpark bez konieczności konfigurowania infrastruktury i autoskalowania. Usługa zarządzana Apache Spark obsługuje zadania wsadowe i sesje / notatniki PySpark.
  • Zarządzane klastry Apache Spark umożliwiają zarządzanie klastrem Hadoop YARN dla zadań Spark opartych na YARN, a także narzędziami open source, takimi jak Flink i Presto. Możesz dostosować klastry w chmurze za pomocą dowolnego skalowania w pionie lub w poziomie, w tym autoskalowania.

2. Tworzenie zarządzanego klastra Apache Spark w sieci VPC Google Cloud

W tym kroku utworzysz zarządzany klaster Apache Spark w Google Cloud za pomocą konsoli Google Cloud.

Najpierw włącz interfejs API usługi zarządzanej Apache Spark w konsoli. Po włączeniu wyszukaj „Zarządzany Apache Spark” na pasku wyszukiwania i kliknij Utwórz klaster.

Wybierz Klaster w Compute Engine, aby używać maszyn wirtualnych Google Compute Engine(GCE) jako podstawowej infrastruktury do uruchamiania klastrów zarządzanych Apache Spark.

a961b2e8895e88da.jpeg

Wyświetli się strona tworzenia klastra.

9583c91204a09c12.jpeg

Na tej stronie:

  • Nadaj klastrowi niepowtarzalną nazwę.
  • Wybierz konkretny region. Możesz też wybrać strefę, ale usługa zarządzana Apache Spark umożliwia automatyczne wybranie strefy. Na potrzeby tego samouczka wybierz „us-central1” i „us-central1-c”.
  • Wybierz typ klastra „Standardowy”. Dzięki temu będzie tylko 1 węzeł główny.
  • Na karcie Skonfiguruj węzły sprawdź, czy utworzone zostaną 2 instancje robocze.
  • W sekcji Dostosuj klaster zaznacz pole obok opcji Włącz bramę komponentów. Umożliwia to dostęp do interfejsów internetowych w klastrze, w tym interfejsu Spark, menedżera węzłów Yarn i notatników Jupyter.
  • W sekcji Komponenty opcjonalne wybierz Notatnik Jupyter.Spowoduje to skonfigurowanie klastra z serwerem notatnika Jupyter.
  • Pozostaw wszystko inne bez zmian i kliknij Utwórz klaster.

Spowoduje to uruchomienie klastra usługi zarządzanej dla Apache Spark.

3. Uruchamianie klastra i łączenie się z nim przez SSH

Gdy stan klastra zmieni się na Uruchomiono, kliknij nazwę klastra w konsoli usługi zarządzanej Apache Spark.

7332f1c2cb25807d.jpeg

Kliknij kartę Instancja maszyny wirtualnej, aby wyświetlić węzeł główny i 2 węzły robocze klastra.

25be1578e00f669f.jpeg

Aby zalogować się na węzeł główny, kliknij SSH obok węzła głównego.

2810ffd97f315bdb.jpeg

Uruchom polecenia hdfs, aby wyświetlić strukturę katalogu.

hadoop_commands_example

sudo hadoop fs -ls /
sudo hadoop version
sudo hadoop fs -mkdir /test51 
sudo hadoop fs -ls /

4. Interfejsy internetowe i bramy komponentów

W konsoli klastra zarządzanego Apache Spark kliknij nazwę klastra, a następnie kliknij kartę INTERFEJSY SIECIOWE.

6398f71d6293d6ff.jpeg

Wyświetlą się dostępne interfejsy internetowe, w tym Jupyter. Kliknij Jupyter, aby otworzyć notatnik Jupyter. Możesz go użyć do tworzenia notatników w PySpark przechowywanych w GCS. Aby zapisać notatnik w Google Cloud Storage i otworzyć notatnik PySpark, którego będziesz używać w tym ćwiczeniu, wykonaj te czynności.

5. Monitorowanie i obserwowanie zadań Spark

Po uruchomieniu klastra usługi zarządzanej dla Apache Spark utwórz zadanie wsadowe PySpark i prześlij je do klastra usługi zarządzanej dla Apache Spark.

Utwórz zasobnik Google Cloud Storage (GCS), w którym będzie przechowywany skrypt PySpark. Pamiętaj, aby utworzyć zasobnik w tym samym regionie co zarządzany klaster Apache Spark.

679fd2f76806f4e2.jpeg

Teraz, gdy zasobnik GCS został utworzony, skopiuj do niego ten plik.

https://raw.githubusercontent.com/diptimanr/spark-on-gce/main/test-spark-1.py

Ten skrypt tworzy przykładową ramkę danych Spark i zapisuje ją jako tabelę Hive.

hive_job.py

from pyspark.sql import SparkSession
from datetime import datetime, date
from pyspark.sql import Row

spark = SparkSession.builder.master("local").enableHiveSupport().getOrCreate()

df = spark.createDataFrame([ (1, 2., 'string1', date(2000, 1, 1), datetime(2000, 1, 1, 12, 0)),
        (2, 3., 'string2', date(2000, 2, 1), datetime(2000, 1, 2, 12, 0)), (3, 4., 'string3', date(2000, 3, 1), datetime(2000, 1, 3, 12, 0))
    ], schema='a long, b double, c string, d date, e timestamp')
print("..... Writing data .....")
df.write.mode("overwrite").saveAsTable("test_table_1")
print("..... Complete .....")

Prześlij ten skrypt jako zadanie wsadowe Spark w usłudze zarządzanej Apache Spark. W menu nawigacyjnym po lewej stronie kliknij Zadania, a następnie Prześlij zadanie.

5767fc7c50b706d3.jpeg

Podaj identyfikator zadania i region. Wybierz klaster i podaj lokalizację w GCS skopiowanego skryptu Spark. To zadanie zostanie uruchomione jako zadanie wsadowe Spark w usłudze zarządzanej Apache Spark.

W sekcji Properties (Właściwości) dodaj klucz spark.submit.deployMode i wartość client, aby mieć pewność, że sterownik działa w węźle głównym usługi zarządzanej Apache Spark, a nie w węzłach roboczych. Kliknij Prześlij, aby przesłać zadanie wsadowe do usługi zarządzanej Apache Spark.

a7ca90f5132faa31.jpeg

Skrypt Spark utworzy ramkę danych i zapisze ją w tabeli Hivetest_table_1.

Po pomyślnym uruchomieniu zadania możesz wyświetlić instrukcje drukowania w konsoli na karcie Monitorowanie.

bdec2f3ae1055f9.jpeg

Po utworzeniu tabeli Hive prześlij kolejne zadanie zapytania Hive, aby wybrać zawartość tabeli i wyświetlić ją w konsoli.

Utwórz kolejne zadanie o tych właściwościach:

c16f02d1b3afaa27.jpeg

Zwróć uwagę, że Typ zadania jest ustawiony na Hive, a typ źródła zapytania to Tekst zapytania, co oznacza, że całą instrukcję HiveQL wpiszemy w polu tekstowym Tekst zapytania.

Prześlij zadanie, pozostawiając pozostałe parametry jako domyślne.

e242e50bc2519bf4.jpeg

Zwróć uwagę, jak HiveQL wybiera wszystkie rekordy i wyświetla je w konsoli.

6. Autoskalowanie

Autoskalowanie to szacowanie „odpowiedniej” liczby węzłów roboczych klastra dla danego zadania.

Interfejs Managed Apache Spark AutoscalingPolicies API zapewnia mechanizm automatyzacji zarządzania zasobami klastra i umożliwia autoskalowanie maszyn wirtualnych instancji roboczych klastra. Zasada autoskalowania to konfiguracja wielokrotnego użytku, która opisuje sposób, w jaki powinny być skalowane instancje robocze klastra, w których stosowana jest dana zasada autoskalowania. Definiuje ona granice, częstotliwość i agresywność skalowania, co zapewnia szczegółową kontrolę nad zasobami klastra od początku jego istnienia.

Zarządzane zasady autoskalowania Apache Spark są zapisywane w plikach YAML, które są przekazywane w poleceniu CLI służącym do tworzenia klastra lub wybierane z zasobnika GCS podczas tworzenia klastra w konsoli Cloud.

Oto przykład zasad automatycznego skalowania usługi zarządzanej Apache Spark :

policy.yaml

workerConfig:
  minInstances: 10
  maxInstances: 10
secondaryWorkerConfig:
  maxInstances: 50
basicAlgorithm:
  cooldownPeriod: 4m
  yarnConfig:
    scaleUpFactor: 0.05
    scaleDownFactor: 1.0
    gracefulDecommissionTimeout: 1h

7. Konfigurowanie opcjonalnych komponentów zarządzanej usługi Apache Spark

Spowoduje to uruchomienie klastra usługi zarządzanej dla Apache Spark.

Podczas tworzenia klastra usługi zarządzanej dla Apache Spark w klastrze automatycznie instalowane są standardowe komponenty ekosystemu Apache Hadoop (patrz Lista wersji usługi zarządzanej dla Apache Spark). Podczas tworzenia klastra możesz zainstalować w nim dodatkowe komponenty, zwane komponentami opcjonalnymi.

e39cc34245af3f01.jpeg

Podczas tworzenia zarządzanego klastra Apache Spark w konsoli włączyliśmy komponenty opcjonalne i wybraliśmy Jupyter Notebook jako komponent opcjonalny.

8. Zwalnianie miejsca

Aby wyczyścić klaster, kliknij Zatrzymaj po wybraniu klastra w konsoli usługi zarządzanej Apache Spark. Po zatrzymaniu klastra kliknij Usuń, aby go usunąć.

Po usunięciu klastra zarządzanego Apache Spark usuń zasobniki GCS, do których skopiowano kod.

Aby wyczyścić zasoby i uniknąć niechcianych opłat, musisz najpierw zatrzymać, a potem usunąć zarządzany klaster Apache Spark.

Zanim zatrzymasz i usuniesz klaster, upewnij się, że wszystkie dane zapisane w pamięci HDFS zostały skopiowane do GCS w celu trwałego przechowywania.

Aby zatrzymać klaster, kliknij Zatrzymaj.

52065de928ab52e7.jpeg

Gdy klaster się zatrzyma, kliknij Usuń, aby go usunąć.

W oknie potwierdzenia kliknij Usuń, aby usunąć klaster.

52065de928ab52e7.jpeg