1. Einführung – Managed Service for Apache Spark
Managed Service for Apache Spark ist ein vollständig verwalteter, äußerst skalierbarer Dienst für die Ausführung von Apache Spark, Apache Flink, Presto und vielen anderen Open-Source-Tools und ‑Frameworks. Verwenden Sie Managed Service for Apache Spark für die Modernisierung von Data Lakes, ETL / ELT und sichere Data Science im globalen Maßstab. Managed Service for Apache Spark ist auch vollständig in verschiedene Google Cloud-Dienste eingebunden, darunter BigQuery, Cloud Storage, Gemini Enterprise Agent Engine und Knowledge Catalog.
Managed Service for Apache Spark ist in zwei Bereitstellungsmodi verfügbar:
- Mit Managed Apache Spark Serverless können Sie PySpark-Jobs ausführen, ohne Infrastruktur und Autoscaling konfigurieren zu müssen. Managed Apache Spark unterstützt PySpark-Batcharbeitslasten und -Sitzungen / Notebooks.
- Mit verwalteten Apache Spark-Clustern können Sie einen Hadoop YARN-Cluster für YARN-basierte Spark-Arbeitslasten sowie Open-Source-Tools wie Flink und Presto verwalten. Sie können Ihre cloudbasierten Cluster mit beliebig viel vertikaler oder horizontaler Skalierung anpassen, einschließlich Autoscaling.
2. Verwalteten Apache Spark-Cluster in einer Google Cloud-VPC erstellen
In diesem Schritt erstellen Sie einen verwalteten Apache Spark-Cluster in Google Cloud über die Google Cloud Console.
Aktivieren Sie zuerst die Managed Apache Spark-Dienst-API in der Console. Suchen Sie dann in der Suchleiste nach „Managed Apache Spark“ und klicken Sie auf Cluster erstellen.
Wählen Sie Cluster in Compute Engine aus, um Google Compute Engine-VMs(GCE) als zugrunde liegende Infrastruktur für die Ausführung von Managed Apache Spark-Clustern zu verwenden.

Sie befinden sich jetzt auf der Seite zum Erstellen von Clustern.

Auf dieser Seite:
- Geben Sie einen eindeutigen Namen für den Cluster ein.
- Wählen Sie die gewünschte Region aus. Sie können auch eine Zone auswählen. Bei Managed Apache Spark kann jedoch automatisch eine Zone für Sie ausgewählt werden. Wählen Sie für dieses Codelab „us-central1“ und „us-central1-c“ aus.
- Wählen Sie den Clustertyp „Standard“ aus. Dadurch wird sichergestellt, dass es einen Masterknoten gibt.
- Prüfen Sie auf dem Tab Knoten konfigurieren, ob zwei Worker erstellt werden.
- Setzen Sie im Abschnitt Cluster anpassen ein Häkchen neben Component Gateway aktivieren. Dies ermöglicht den Zugriff auf Weboberflächen im Cluster, einschließlich der Spark-UI, des Yarn Node Manager und von Jupyter-Notebooks.
- Wählen Sie unter Optionale Komponenten die Option Jupyter Notebook aus.Dadurch wird der Cluster mit einem Jupyter-Notebookserver konfiguriert.
- Lassen Sie alle anderen Einstellungen unverändert und klicken Sie auf Cluster erstellen.
Dadurch wird ein verwalteter Apache Spark-Cluster hochgefahren.
3. Cluster starten und SSH-Verbindung herstellen
Sobald sich der Clusterstatus in Wird ausgeführt ändert, klicken Sie in der Managed Apache Spark-Konsole auf den Clusternamen.

Klicken Sie auf den Tab VM-Instanz, um den Masterknoten und die beiden Worker-Knoten des Clusters aufzurufen.

Klicken Sie neben dem Masterknoten auf SSH, um sich beim Masterknoten anzumelden.

Führen Sie HDFS-Befehle aus, um die Verzeichnisstruktur aufzurufen.
hadoop_commands_example
sudo hadoop fs -ls /
sudo hadoop version
sudo hadoop fs -mkdir /test51
sudo hadoop fs -ls /
4. Webschnittstellen und Component Gateways
Klicken Sie in der Konsole für verwaltete Apache Spark-Cluster auf den Namen Ihres Clusters und dann auf den Tab WEBOBERFLÄCHEN.

Hier werden die verfügbaren Weboberflächen angezeigt, einschließlich Jupyter. Klicken Sie auf Jupyter, um ein Jupyter-Notebook zu öffnen. Sie können damit Notebooks in PySpark erstellen, die in GCS gespeichert werden. Speichern Sie Ihr Notebook in Google Cloud Storage und öffnen Sie ein PySpark-Notebook, das Sie in diesem Codelab verwenden können.
5. Spark-Jobs überwachen und beobachten
Nachdem der verwaltete Apache Spark-Cluster eingerichtet und ausgeführt wird, erstellen Sie einen PySpark-Batchjob und senden Sie ihn an den verwalteten Apache Spark-Cluster.
Erstellen Sie einen Google Cloud Storage-Bucket (GCS), um das PySpark-Skript zu speichern. Erstellen Sie den Bucket in derselben Region wie den verwalteten Apache Spark-Cluster.

Nachdem der GCS-Bucket erstellt wurde, kopieren Sie die folgende Datei in diesen Bucket.
https://raw.githubusercontent.com/diptimanr/spark-on-gce/main/test-spark-1.py
Mit diesem Skript wird ein Spark-BeispieldataFrame erstellt und als Hive-Tabelle geschrieben.
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 .....")
Senden Sie dieses Script als Spark-Batchjob in Managed Apache Spark. Klicken Sie im linken Navigationsmenü auf Jobs und dann auf Job senden.

Geben Sie eine Job-ID und eine Region an. Wählen Sie Ihren Cluster aus und geben Sie den GCS-Speicherort des kopierten Spark-Scripts an. Dieser Job wird als Spark-Batchjob in Managed Apache Spark ausgeführt.
Fügen Sie unter Properties den Schlüssel spark.submit.deployMode und den Wert client hinzu, damit der Treiber auf dem verwalteten Apache Spark-Masterknoten und nicht auf den Worker-Knoten ausgeführt wird. Klicken Sie auf Senden, um den Batchjob an Managed Apache Spark zu senden.

Das Spark-Skript erstellt einen DataFrame und schreibt in eine Hive-Tabelle test_table_1.
Sobald der Job erfolgreich ausgeführt wurde, können Sie die Konsolenausgaben auf dem Tab Monitoring ansehen.

Nachdem die Hive-Tabelle erstellt wurde, senden Sie einen weiteren Hive-Abfragejob, um den Inhalt der Tabelle auszuwählen und in der Konsole anzuzeigen.
Erstellen Sie einen weiteren Job mit den folgenden Attributen:

Beachten Sie, dass Job Type (Jobtyp) auf Hive und der Abfragequelltyp auf Query Text (Abfragetext) festgelegt ist. Das bedeutet, dass wir die gesamte HiveQL-Anweisung in das Textfeld Query Text (Abfragetext) schreiben.
Senden Sie den Job ab und behalten Sie für die restlichen Parameter die Standardeinstellungen bei.

Beachten Sie, dass mit dem HiveQL-Befehl alle Datensätze ausgewählt und in der Konsole angezeigt werden.
6. Autoscaling
Autoscaling ist die Aufgabe, die „richtige“ Anzahl von Cluster-Worker-Knoten für eine Arbeitslast zu schätzen.
Die Managed Apache Spark AutoscalingPolicies API bietet einen Mechanismus zur Automatisierung der Clusterressourcenverwaltung und ermöglicht das Autoscaling von Cluster-Worker-VMs. Eine Autoscaling-Richtlinie ist eine wiederverwendbare Konfiguration, die beschreibt, wie Cluster-Worker mit der Autoscaling-Richtlinie skaliert werden sollen. Sie definiert Skalierungsgrenzen, Häufigkeit und Aggressivität, um eine detaillierte Kontrolle über Clusterressourcen während der gesamten Clusterlebensdauer zu ermöglichen.
Verwaltete Autoscaling-Richtlinien für Apache Spark werden mit YAML-Dateien geschrieben. Diese YAML-Dateien werden entweder im CLI-Befehl zum Erstellen des Clusters übergeben oder aus einem GCS-Bucket ausgewählt, wenn ein Cluster über die Cloud Console erstellt wird.
Hier ist ein Beispiel für eine Autoscaling-Richtlinie für Managed 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. Optionale Komponenten für verwaltetes Apache Spark konfigurieren
Dadurch wird ein verwalteter Apache Spark-Cluster hochgefahren.
Beim Erstellen eines verwalteten Apache Spark-Clusters werden automatisch Standardkomponenten des Apache Hadoop-Systems auf dem Cluster installiert (siehe Liste der verwalteten Apache Spark-Versionen). Sie können beim Erstellen des Clusters auch zusätzliche Komponenten, sogenannte optionale Komponenten, im Cluster installieren.

Beim Erstellen des verwalteten Apache Spark-Clusters über die Konsole haben wir optionale Komponenten aktiviert und Jupyter Notebook als optionale Komponente ausgewählt.
8. Ressourcen bereinigen
Wenn Sie den Cluster bereinigen möchten, klicken Sie in der Managed Apache Spark-Konsole auf Beenden, nachdem Sie den Cluster ausgewählt haben. Wenn der Cluster beendet wurde, klicken Sie auf Löschen, um ihn zu löschen.
Nachdem der verwaltete Apache Spark-Cluster gelöscht wurde, löschen Sie die GCS-Buckets, in die Code kopiert wurde.
Um die Ressourcen zu bereinigen und unerwünschte Abrechnungen zu vermeiden, muss der verwaltete Apache Spark-Cluster zuerst beendet und dann gelöscht werden.
Bevor Sie den Cluster beenden und löschen, müssen Sie dafür sorgen, dass alle in den HDFS-Speicher geschriebenen Daten in GCS kopiert werden, um sie dauerhaft zu speichern.
Klicken Sie auf Beenden, um den Cluster zu beenden.

Wenn der Cluster beendet wurde, klicken Sie auf Löschen, um ihn zu löschen.
Klicken Sie im Bestätigungsdialogfeld auf Löschen, um den Cluster zu löschen.
