In diesem Dokument erfahren Sie, wie Sie einen virtuellen Managed Service for Apache Spark-Cluster in GKE erstellen, und dann einen Spark-Job im Cluster ausführen.
Übersicht über die Optionen
Managed Service for Apache Spark in GKE bietet zwar eine leistungsstarke Steuerung für containerisierte Umgebungen, Google Cloud aber auch vollständig verwaltete und serverlose Optionen, die den Betrieb vereinfachen und die Entwicklung beschleunigen können. Einen Vergleich der Bereitstellungsoptionen für Spark Managed Service for Apache Spark finden Sie unter Den besten Spark-Dienst auswählen.
Hinweis
- Melden Sie sich in Ihrem Google Cloud Konto an. Wenn Sie noch kein Google Cloud-Kunde sind, erstellen Sie ein Konto, um zu testen, wie sich unsere Produkte in realen Szenarien schlagen. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that you have the permissions required to complete this guide.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Dataproc API.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Installieren Sie die Google Cloud CLI.
-
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that you have the permissions required to complete this guide.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Dataproc API.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Installieren Sie die Google Cloud CLI.
-
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init Sie müssen einen Standardcluster (kein Autopilot) von Google Kubernetes Engine (GKE) zonalen oder regionalen Cluster erstellt haben, in dem Workload Identity aktiviert ist.
Erforderliche Rollen
Bestimmte IAM-Rollen sind erforderlich, um die Beispiele auf dieser Seite auszuführen. Je nach Organisationsrichtlinien wurden diese Rollen möglicherweise bereits gewährt. Informationen zum Prüfen von Rollenzuweisungen finden Sie unter Müssen Sie Rollen zuweisen?.
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Nutzerrollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Erstellen eines Managed Service for Apache Spark-Clusters benötigen:
- Dataproc-Bearbeiter (
roles/dataproc.editor) für das Projekt - Dienstkontonutzer (
roles/iam.serviceAccountUser) für das Compute Engine-Standarddienstkonto
Dienstkontorolle
Damit das Compute Engine-Standarddienstkonto die erforderlichen
Berechtigungen zum Erstellen eines Managed Service for Apache Spark-Clusters hat,
bitten Sie Ihren Administrator, dem
Compute Engine-Standarddienstkonto die IAM-Rolle Dataproc-Worker (roles/dataproc.worker) für das Projekt zuzuweisen.
Virtuellen Cluster erstellen
Ein virtueller Managed Service for Apache Spark-Cluster in GKE wird als Bereitstellungsplattform für Managed Service for Apache Spark-Komponenten erstellt. Es handelt sich um eine virtuelle Ressource, die im Gegensatz zu einem Managed Service for Apache Spark-Cluster in Compute Engine keine separaten Master- und Worker-VMs für Managed Service for Apache Spark enthält.
Managed Service for Apache Spark in GKE erstellt Knotenpools in einem GKE Cluster, wenn Sie einen virtuellen Managed Service for Apache Spark-Cluster in GKE erstellen.
Managed Service for Apache Spark in GKE-Jobs werden als Pods in diesen Knotenpools ausgeführt. Die Knotenpools und die Planung von Pods in den Knotenpools werden von GKE verwaltet.
Mehrere virtuelle Cluster erstellen Sie können mehrere virtuelle Cluster in einem GKE-Cluster erstellen und ausführen, um die Ressourcennutzung zu verbessern, indem Sie Knotenpools für die virtuellen Cluster freigeben.
- Jeder virtuelle Cluster:
- wird mit separaten Eigenschaften erstellt, einschließlich der Spark-Engine-Version und der Workload Identity.
- ist in einem separaten GKE-Namespace im GKE-Cluster isoliert.
- Jeder virtuelle Cluster:
Console
Das Erstellen eines Managed Service for Apache Spark-Clusters in GKE wird in der Google Cloud Console nicht unterstützt.
gcloud
Legen Sie Umgebungsvariablen fest und führen Sie den
gcloud dataproc clusters gke create
Befehl lokal oder in Cloud Shell aus, um einen Managed Service for Apache Spark-Cluster in GKE zu erstellen.
Legen Sie Umgebungsvariablen fest:
Hinweise:DP_CLUSTER=Managed Service for Apache Spark on GKE cluster-name \ REGION=region \ GKE_CLUSTER=GKE cluster-name \ BUCKET=Cloud Storage bucket-name \ DP_POOLNAME=node pool-name PHS_CLUSTER=Managed Service for Apache Spark PHS server name
DP_CLUSTER: Legen Sie den Namen des virtuellen Managed Service for Apache Spark-Clusters fest. Er muss mit einem Kleinbuchstaben beginnen und darf maximal 54 Kleinbuchstaben, Zahlen oder Bindestriche enthalten. Er darf nicht mit einem Bindestrich enden.REGION: Die region muss mit der Region übereinstimmen, in der sich der GKE-Cluster befindet.GKE_CLUSTER: Der Name Ihres vorhandenen GKE-Cluster.BUCKET: (Optional) Sie können den Namen eines Cloud Storage-Buckets angeben, den Managed Service for Apache Spark zum Staging von Artefakten verwendet. Wenn Sie keinen Bucket angeben, erstellt Managed Service for Apache Spark in GKE einen Staging-Bucket.DP_POOLNAME: Der Name eines Knotenpools , der im GKE-Cluster erstellt werden soll.PHS_CLUSTER: (Optional) Managed Service for Apache Spark PHS-Server , mit dem Sie den Spark-Jobverlauf in aktiven und gelöschten Managed Service for Apache Spark-Clustern in GKE ansehen können. Der PHS-Cluster muss sich in derselben Region wie der Managed Service for Apache Spark-Cluster in GKE befinden.
Führen Sie diesen Befehl aus:
Hinweise:gcloud dataproc clusters gke create ${DP_CLUSTER} \ --region=${REGION} \ --gke-cluster=${GKE_CLUSTER} \ --spark-engine-version=latest \ --staging-bucket=${BUCKET} \ --pools="name=${DP_POOLNAME},roles=default" \ --setup-workload-identity \ --history-server-cluster=${PHS_CLUSTER}--spark-engine-version: Die Spark-Image-Version , die im Managed Service for Apache Spark-Cluster verwendet wird. Sie können eine Kennung wie3,3.1oderlatestverwenden oder die vollständige Subminor-Version angeben, z. B.3.1-dataproc-5.--staging-bucket: Entfernen Sie dieses Flag, damit Managed Service for Apache Spark in GKE einen Staging-Bucket erstellt.--pools: Mit diesem Flag wird ein neuer oder vorhandener Knotenpool angegeben, den Managed Service for Apache Spark erstellt oder verwendet, um die Arbeitslast auszuführen. Listen Sie die Einstellungen für den Managed Service for Apache Spark-Knotenpool in GKE durch Kommas getrennt auf, z. B.: Sie müssen den--pools=name=dp-default,roles=default,machineType=e2-standard-4,min=0,max=10
nameund dieroledes Knotenpools angeben. Andere Einstellungen für Knotenpools sind optional. Sie können mehrere--pools-Flags verwenden, um mehrere Knotenpools anzugeben. Mindestens ein Knotenpool muss die Rolledefaulthaben. Alle Knotenpools müssen denselben Standort haben.--setup-workload-identity: Mit diesem Flag werden Workload Identity -Bindungen aktiviert. Durch diese Bindungen können die Kubernetes-Dienstkonten (Kubernetes Service Accounts, KSAs) als Standard Dienstkonto für die Managed Service for Apache Spark-VM (Identität der Datenebene) des virtuellen Clusters fungieren.
REST
Füllen Sie eine
virtualClusterConfig
als Teil einer
cluster.create
API-Anfrage aus.
Ersetzen Sie folgende Werte in den Anfragedaten:
- PROJECT: Google Cloud-Projekt-ID
- REGION: Region des virtuellen Dataproc-Clusters (dieselbe Region wie die Region des vorhandenen GKE-Cluster)
- DP_CLUSTER: Name des Dataproc-Clusters
- GKE_CLUSTER: Name des GKE-Cluster
- NODE_POOL: Name des Knotenpools
- PHS_CLUSTER: Name des Persistent History Server-Clusters (PHS)
- BUCKET: (Optional) Name des Staging-Buckets. Lassen Sie dieses Feld leer, damit Managed Service for Apache Spark in GKE einen Staging-Bucket erstellt.
HTTP-Methode und URL:
POST https://dataproc.googleapis.com/v1/projects/project-id/regions/region/clusters
JSON-Text der Anfrage:
{
"clusterName":"DP_CLUSTER",
"projectId":"PROJECT",
"virtualClusterConfig":{
"auxiliaryServicesConfig":{
"sparkHistoryServerConfig":{
"dataprocCluster":"projects/PROJECT/regions/REGION/clusters/PHS_CLUSTER"
}
},
"kubernetesClusterConfig":{
"gkeClusterConfig":{
"gkeClusterTarget":"projects/PROJECT/locations/REGION/clusters/GKE_CLUSTER",
"nodePoolTarget":[
{
"nodePool":"projects/PROJECT/locations/REGION/clusters/GKE_CLUSTER/nodePools/NODE_POOL",
"roles":[
"DEFAULT"
]
}
]
},
"kubernetesSoftwareConfig":{
"componentVersion":{
"SPARK":"latest"
}
}
},
"stagingBucket":"BUCKET"
}
}
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:
{
"projectId":"PROJECT",
"clusterName":"DP_CLUSTER",
"status":{
"state":"RUNNING",
"stateStartTime":"2022-04-01T19:16:39.865716Z"
},
"clusterUuid":"98060b77-...",
"statusHistory":[
{
"state":"CREATING",
"stateStartTime":"2022-04-01T19:14:27.340544Z"
}
],
"labels":{
"goog-dataproc-cluster-name":"DP_CLUSTER",
"goog-dataproc-cluster-uuid":"98060b77-...",
"goog-dataproc-location":"REGION",
"goog-dataproc-environment":"prod"
},
"virtualClusterConfig":{
"stagingBucket":"BUCKET",
"kubernetesClusterConfig":{
"kubernetesNamespace":"dp-cluster",
"gkeClusterConfig":{
"gkeClusterTarget":"projects/PROJECT/locations/REGION/clusters/GKE_CLUSTER",
"nodePoolTarget":[
{
"nodePool":"projects/PROJECT/locations/REGION/clusters/GKE_CLUSTER/nodePools/NODE_POOL",
"roles":[
"DEFAULT"
]
}
]
},
"kubernetesSoftwareConfig":{
"componentVersion":{
"SPARK":"3.1-..."
},
"properties":{
"dpgke:dpgke.unstable.outputOnly.endpoints.sparkHistoryServer":"https://...",
"spark:spark.eventLog.dir":"gs://BUCKET/.../spark-job-history",
"spark:spark.eventLog.enabled":"true"
}
}
},
"auxiliaryServicesConfig":{
"sparkHistoryServerConfig":{
"dataprocCluster":"projects/PROJECT/regions/REGION/clusters/PHS_CLUSTER"
}
}
}
Spark-Job senden
Nachdem Ihr virtueller Managed Service for Apache Spark-Cluster in GKE ausgeführt wird,
senden Sie einen Spark-Job
über die Google Cloud Console,
die gcloud CLIoder die
Managed Service for Apache Spark
jobs.submit
-API (mit direkten HTTP-Anfragen oder den
Cloud-Clientbibliotheken).
**Beispiel für einen Spark-Job in der gcloud CLI** :
gcloud dataproc jobs submit spark \
--region=${REGION} \
--cluster=${DP_CLUSTER} \
--class=org.apache.spark.examples.SparkPi \
--jars=local:///usr/lib/spark/examples/jars/spark-examples.jar \
-- 1000
**Beispiel für einen PySpark-Job in der gcloud CLI** :
gcloud dataproc jobs submit pyspark \
--region=${REGION} \
--cluster=${DP_CLUSTER} \
local:///usr/lib/spark/examples/src/main/python/pi.py \
-- 10
**Beispiel für einen SparkR-Job in der gcloud CLI** :
gcloud dataproc jobs submit spark-r \
--region=${REGION} \
--cluster=${DP_CLUSTER} \
local:///usr/lib/spark/examples/src/main/r/dataframe.R
Bereinigen
Löschen Sie alle Ressourcen, die in dieser Kurzanleitung verwendet wurden und die Sie nicht mehr verwenden möchten.
Löschen Sie den Managed Service for Apache Spark-Cluster in GKE.
Löschen Sie die Knotenpools , die vom Managed Service for Apache Spark-Cluster in GKE verwendet werden.