In dieser Anleitung wird Spark-Entwicklern, Spark-Administratoren und Spark-Betrachtern gezeigt, wie sie die Berechtigungen erhalten, die sie benötigen, um mit der Verwendung von Managed Service for Apache Spark Serverless für Batch-Arbeitslasten und interaktive Sitzungen zu beginnen.
| Persona | Wer sie in der Organisation sind | Was sie von IAM benötigen |
|---|---|---|
| Spark-Entwickler | Der Builder und der Nutzer der Plattform. Schreibt und führt PySpark- und Spark-Jobs aus, entwickelt in Notebooks und Sitzungen, liest und schreibt Datasets und überwacht und behebt Fehler in seinen Arbeitslasten. Dazu gehören Data Engineers, Data Scientists und Entwickler. | Berechtigungen zum Einreichen, Ausführen, Überwachen und Beheben von Fehlern bei Arbeitslasten sowie zum Lesen und Schreiben der Daten, auf die ihre Jobs zugreifen. |
| Spark-Administrator | Der Plattforminhaber und -administrator. Richtet das Projekt ein, entscheidet, wie Arbeitslasten authentifiziert werden, führt Spark-Entwickler ein, verwaltet gemeinsam genutzte Dienstkonten und setzt Organisationsrichtlinien und das Prinzip der geringsten Berechtigung durch. Wird auch als Plattformadministrator bezeichnet. | Berechtigungen zum Gewähren des Zugriffs für andere, zum Konfigurieren der Ausführungsidentität (Anmeldedaten des Endnutzers oder ein gemeinsames Dienstkonto) und zum Verwalten von projektweiten serverlosen Ressourcen. |
| Spark-Viewer | Der Beobachter und Auditor der Plattform. Job-Abschluss, Ausführungsverlauf, Messwerte und Dashboards werden verfolgt, ohne dass Arbeitslasten gesendet oder geändert werden müssen. Dazu gehören Analysten, Projektmanager, FinOps- und Compliance-Auditoren. | Schreibgeschützte Berechtigungen zum Ansehen von Batches, Sitzungen, Vorgängen und Status-Dashboards. |
Laufzeitversion auswählen
Die empfohlene Laufzeitversion hängt von der Apache Spark-Version ab, auf der Ihre Arbeitslasten ausgeführt werden.
Laufzeit
3.x(empfohlen): verwendet Spark4und bietet ein einfacheres Onboarding und eine einfachere Nutzung. Standardmäßig werden Arbeitslasten als der einreichende Nutzer mit den Anmeldedaten des Endnutzers ausgeführt. Dazu muss dem Nutzer eine einzelne IAM-Rolle zugewiesen werden. Administratoren können benutzerdefinierte Dienstkonten für Arbeitslasten für eine erweiterte Nutzung konfigurieren.Laufzeit
2.x: verwendet Spark3.5und separate Konten für Absender und Arbeitslast. Standardmäßig ist der Absender die Nutzeridentität und das Compute Engine-Standarddienstkonto die Arbeitslastidentität. Administratoren können benutzerdefinierte Dienstkonten für Arbeitslasten konfigurieren, um eine detailliertere Zugriffssteuerung zu ermöglichen.
Weitere Informationen finden Sie unter Laufzeitversionen von Managed Service for Apache Spark.
Funktionsvergleich
Mit Runtime-3.x-Upgrades werden 2.x-Komponenten und ‑Funktionen aktualisiert und die Einrichtung wird vereinfacht:
| Funktion und Workflow | Laufzeit 3.x (empfohlen) |
Laufzeit 2.x |
|---|---|---|
| Apache Spark-Version | Spark 4 | Spark 3.5 (und frühere Versionen 3.x) |
| Interaktive Entwicklung | Spark Connect-Sitzungen (interaktiver Spark-Client nach Industriestandard) | Jupyter-Sitzungen |
| R-Batcharbeitslasten | sparklyr |
SparkR-Batches |
| Ausführungsidentität | Anmeldedaten für Endnutzer1 | Dienstkonto 1 |
| Speicher für das Staging von Jobs | Nicht erforderlich (intern verwaltet) | Cloud Storage-Staging-Buckets |
| Format der Protokollausgabe | Strukturiertes JSON-Format (jsonPayload) |
Klartextformat (textPayload) |
1 Die Laufzeit 3.x verwendet standardmäßig die Endnutzeranmeldedaten (End-User Credentials, EUC) des Absenders, sofern für die Arbeitslast oder Sitzung kein benutzerdefiniertes Dienstkonto angegeben ist.
Die Laufzeit 2.x wird standardmäßig auf das Compute Engine-Standarddienstkonto festgelegt, sofern kein benutzerdefiniertes Dienstkonto für die Arbeitslast oder Sitzung angegeben ist.
Häufige Daten- und Dienstrollen
Managed Service for Apache Spark wird in der Regel zum Lesen aus und Schreiben in andereGoogle Cloud -Dienste verwendet. In diesem Abschnitt werden Rollen aufgeführt, die mit häufig aufgerufenen Diensten verknüpft sind.
- Laufzeit
3.x(Standard-EUC-Identität): Weisen Sie dem Spark-Entwickler (Nutzer oder Gruppe) Rollen zu. - Laufzeit
2.x:Weisen Sie dem Dienstkonto der Arbeitslast (dem Compute Engine-Standarddienstkonto oder einem benutzerdefinierten Dienstkonto der Arbeitslast) Rollen zu.
| Dienst oder API | Rolle | Zweck |
|---|---|---|
| Cloud Storage | roles/storage.objectViewerroles/storage.objectAdmin |
Eingabedaten und bereitgestellte Skripts lesen. Ausgabedaten schreiben. |
| BigLake- und Lakehouse-Laufzeitkatalog | roles/biglake.viewerroles/biglake.editorroles/biglake.admin |
Mit dem BigLake REST-Katalog (Lakehouse REST-Katalog, LRC) können Sie offene Tabellenformate wie Apache Iceberg und Delta Lake abfragen und verwalten. |
| Bigtable | roles/bigtable.readerroles/bigtable.user |
Bigtable-Tabellen lesen. Bigtable-Daten lesen und schreiben. |
| Dataproc Metastore (DPMS) | roles/metastore.metadataViewerroles/metastore.editor |
Hive-Metadaten lesen. Metadatenschemas und ‑tabellen verwalten. DPMS ist ein Legacy-Metaspeicher. Kunden wird empfohlen, den BigLake Lakehouse REST-Katalog (LRC) zu verwenden. |
BigQuery bietet viele detaillierte IAM-Rollen und ACLs auf Ressourcenebene. Weitere Informationen finden Sie unter BigQuery-IAM-Rollen und -Berechtigungen.
Rollen gewähren
Der folgende Abschnitt enthält eine Anleitung zum Zuweisen von Rollen für die einzelnen Rollen, die mit dem Einrichten, Senden und Überwachen von serverlosen 3.x- und 2.x-Batcharbeitslasten und interaktiven Sitzungen von Managed Service for Apache Spark verknüpft sind.
Runtime 3.x
Standardmäßig werden 3.x-Arbeitslasten mit den Endnutzeranmeldedaten (End-User Credentials, EUC) des einreichenden Nutzers ausgeführt. Administratoren weisen dem Nutzer eine einzelne Rolle zu. Es sind keine freigegebenen Dienstkonten oder Staging-Buckets erforderlich. Administratoren können benutzerdefinierte Dienstkonten konfigurieren, wenn dedizierte Dienstidentitäten erforderlich sind.
Entwickler
Spark-Entwickler (Laufzeitversion 3.x)
Als Spark-Entwickler können Sie die Laufzeit 3.x mit Ihren Nutzeranmeldedaten verwenden, um Spark-Arbeitslasten zu entwickeln, zu senden, zu überwachen und Fehler zu beheben sowie direkt auf Daten zuzugreifen.
Fordern Sie die serverlose Editorrolle an. Bitten Sie Ihren Administrator, Ihnen
roles/dataproc.serverlessEditorfür das Projekt zu gewähren.gcloud projects add-iam-policy-binding PROJECT_ID \ --member="user:DEVELOPER_EMAIL" \ --role="roles/dataproc.serverlessEditor"Mit dieser Rolle können Sie Spark-Batcharbeitslasten und interaktive Spark Connect-Sitzungen einreichen, überwachen, Fehler beheben und abbrechen.
Zugriff auf Daten und Dienste erhalten Da die Arbeitslast als Sie ausgeführt wird, muss Ihre Identität Zugriff auf die Dienste und Datasets haben, auf die Ihre Spark-Anwendung zugreift (siehe Häufig verwendete Daten- und Servicerollen).
Gewähren Sie sich beispielsweise Lesezugriff auf einen Cloud Storage-Eingabe-Bucket:
gcloud storage buckets add-iam-policy-binding gs://INPUT_BUCKET \ --member="user:DEVELOPER_EMAIL" \ --role="roles/storage.objectViewer"Senden Sie eine Testarbeitslast. Reichen Sie eine Test-Batcharbeitslast ein, um die Einrichtung zu bestätigen.
gcloud dataproc batches submit spark \ --region=REGION \ --version=3.0 \ --class=org.apache.spark.examples.SparkPi \ --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \ -- 1000Hinweise:
Wenn Sie zum ersten Mal einen
3.x-Arbeitslast mit Endnutzeranmeldedaten (End-User Credentials, EUC) einreichen, werden Sie aufgefordert, die einmalige OAuth-Zustimmung zu erteilen. Erteilen Sie die Einwilligung und senden Sie die Arbeitslast dann noch einmal.Wenn Ihr Projekt kein
default-VPC-Netzwerk hat, verwenden Sie das Flag oder Feldsubnet, um Ihr regionales Subnetz anzugeben (siehe Konfiguration des serverlosen Netzwerks für Managed Service for Apache Spark).Ein End-to-End-Beispiel für das Ausführen von PySpark-Arbeitslasten und das Konfigurieren der erforderlichen Berechtigungen für Cloud Storage, BigLake und BigQuery finden Sie unter Daten transformieren und in eine Apache Iceberg-Tabelle schreiben.
Benutzerdefinierte Dienstkonten für Arbeitslasten (Laufzeit 3.x)
Verwenden Sie ein benutzerdefiniertes Dienstkonto mit der Laufzeit 3.x, wenn in Ihrer Organisation Workloads unter einer dedizierten, prüfbaren Identität anstelle von Endnutzeranmeldedaten ausgeführt werden müssen (siehe IAM-Dienstkonto – Best Practices).
Berechtigung zum Ausführen von Arbeitslasten als benutzerdefiniertes Dienstkonto erhalten Bitten Sie Ihren Administrator, Ihnen
roles/iam.serviceAccountUserfür das benutzerdefinierte Dienstkonto zu gewähren.gcloud iam service-accounts add-iam-policy-binding \ WORKLOAD_SA_EMAIL \ --member="user:DEVELOPER_EMAIL" \ --role="roles/iam.serviceAccountUser"Geben Sie den benutzerdefinierten Dienst an.
gcloud dataproc batches submit spark \ --region=REGION \ --service-account=WORKLOAD_SA_EMAIL \ --version=3.0 \ --class=org.apache.spark.examples.SparkPi \ --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \ -- 1000Dataset-Zugriff gewähren Wenn Sie ein benutzerdefiniertes Dienstkonto verwenden, weisen Sie
WORKLOAD_SA_EMAILdirekt Rollen auf Datenebene zu (siehe Häufig verwendete Daten- und Dienstrollen).
Administrator
Spark-Administrator (Laufzeitversion 3.x)
Als Spark-Administrator richten Sie das Projekt ein, legen fest, wie Arbeitslasten authentifiziert werden, und gewähren Spark-Entwicklern Zugriff.
Arbeitslasten verwenden automatisch das benannte VPC-Subnetz default. Wenn in Ihrem Projekt kein default-Netzwerk vorhanden ist oder benutzerdefinierte VPCs verwendet werden, finden Sie unter Netzwerkkonfiguration für Managed Service for Apache Spark Serverless Informationen zum Einrichten und Angeben eines Subnetzes für Arbeitslasten und Sitzungen.
Laufzeit 3.x mit Anmeldedaten von Endnutzern aktivieren (empfohlen)
Dies ist die Einrichtung mit den geringsten Berechtigungen und dem geringsten Wartungsaufwand. Jeder Spark-Entwickler führt Arbeitslasten mit seiner Nutzeridentität aus. Administratoren müssen keine Dienstkonten für Arbeitslasten einrichten und verwalten.
Gewähren Sie
roles/dataproc.serverlessEditorfür Spark-Entwickler.gcloud projects add-iam-policy-binding PROJECT_ID \ --member="user:DEVELOPER_EMAIL" \ --role="roles/dataproc.serverlessEditor"Gewähren Sie
roles/dataproc.serverlessViewerfür schreibgeschützte Betrachter.Weisen Sie diese Rolle Prüfern, Dashboard-Nutzern und Teammitgliedern zu, die den Jobstatus und die Logs überwachen müssen, ohne Arbeitslasten zu senden oder zu ändern.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="user:VIEWER_EMAIL" \ --role="roles/dataproc.serverlessViewer"Entwicklerzugriff auf Daten gewähren
Standardmäßig werden Laufzeit-
3.x-Arbeitslasten als der Nutzer ausgeführt, der sie gesendet hat. Weisen Sie dem Spark-Entwickler oder der Google-Gruppe, die Spark-Entwickler enthält, Rollen für den Datenzugriff wieroles/storage.objectVieweroderroles/storage.objectAdminzu (siehe Häufig verwendete Daten- und Servicerollen).
Benutzerdefinierte Dienstkonten für Arbeitslasten aktivieren (Laufzeit 3.x)
Verwenden Sie ein benutzerdefiniertes Dienstkonto mit der Laufzeit 3.x, wenn Workloads unter einer dedizierten, prüfbaren Identität anstelle von Endnutzeranmeldedaten ausgeführt werden müssen (siehe IAM-Dienstkonto – Best Practices).
Gewähren Sie
roles/iam.serviceAccountUserfür das benutzerdefinierte Dienstkonto der Arbeitslast.gcloud iam service-accounts add-iam-policy-binding \ WORKLOAD_SA_EMAIL \ --member="user:DEVELOPER_EMAIL" \ --role="roles/iam.serviceAccountUser"Weisen Sie dem benutzerdefinierten Dienstkonto für die Arbeitslast die Rolle
roles/dataproc.serverlessNodezu.Mit dieser Rolle kann das Dienstkonto Compute-Knotenpools verwalten und während der Ausführung von Arbeitslasten mit Spark-Anwendungen kommunizieren:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:WORKLOAD_SA_EMAIL" \ --role="roles/dataproc.serverlessNode"Zugriff auf Anwendungsdaten gewähren
Weisen Sie dem Dienstkonto der Arbeitslast direkt Rollen auf Datenebene zu, damit es Anwendungsdatasets lesen und schreiben kann (siehe Häufig verwendete Daten- und Servicerollen). Wenn Ihre Arbeitslasten gestaffelte Skripts oder benutzerdefinierte JARs verwenden, gewähren Sie auch Lesezugriff auf die entsprechenden Cloud Storage-Buckets.
Benutzerdefinierte Dienstkonten für Einreicher aktivieren (Laufzeit 3.x)
Verwenden Sie ein benutzerdefiniertes Dienstkonto für den Absender, wenn automatisierte Systeme (z. B. Managed Service for Apache Airflow, Cloud Scheduler oder CI- oder CD-Pipelines) Arbeitslasten ohne interaktiven menschlichen Nutzer senden.
In diesem Szenario führt das Dienstkonto des Absenders den
gcloud-Befehl aus, mit dem der Job gestartet wird. Hier ein Beispiel mitgcloud:gcloud dataproc batches submit spark \ --service-account=WORKLOAD_SA_EMAIL \ ...Das Dienstkonto der Arbeitslast führt den Spark-Code auf den Rechenknoten aus und greift auf Anwendungsdatasets zu.
- Gewähren Sie dem benutzerdefinierten Dienstkonto des Einreichers
roles/dataproc.serverlessEditor.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SUBMITTER_SA_EMAIL" \ --role="roles/dataproc.serverlessEditor"Wenn Sie die Laufzeit
3.xmit einem benutzerdefinierten Dienstkonto für den Absender verwenden, ist ein benutzerdefiniertes Dienstkonto für die Arbeitslast erforderlich, um die Arbeitslast auszuführen. Die Laufzeit kann nicht auf Anmeldedaten von Endnutzern zurückgreifen, da es keinen interaktiven Endnutzer gibt. Der Job muss als angegebenes Dienstkonto für Arbeitslasten (--service-account) ausgeführt werden.- Gewähren Sie dem benutzerdefinierten Dienstkonto des Einreichers
Gewähren Sie
roles/iam.serviceAccountUserfür das benutzerdefinierte Dienstkonto der Arbeitslast.gcloud iam service-accounts add-iam-policy-binding \ WORKLOAD_SA_EMAIL \ --member="serviceAccount:SUBMITTER_SA_EMAIL" \ --role="roles/iam.serviceAccountUser"Konfigurieren Sie das benutzerdefinierte Dienstkonto für die Arbeitslast. Weisen Sie
WORKLOAD_SA_EMAILdie Rollenroles/dataproc.serverlessNodeund Anwendungsdaten zu.
Referenz zu Spark-Administratorrollen (Laufzeit 3.x)
In der folgenden Tabelle sind die Rollen zusammengefasst, die mit der Laufzeit 3.x gewährt werden müssen.
| Meldende Partei | Workload Identity | Gewährung an Einreicher | Arbeitslast-Dienstkonto gewähren |
|---|---|---|---|
| Endnutzer (Standard) | Endnutzer (EUC) | roles/dataproc.serverlessEditor (+ Datenrollen für Nutzer) |
(keine – keine SA verwendet) |
| Endnutzer | Benutzerdefinierte SA | roles/dataproc.serverlessEditor + roles/iam.serviceAccountUser bei benutzerdefinierten SA |
roles/dataproc.serverlessNode + Datenrollen |
| Benutzerdefinierte SA (Automatisierung) | Benutzerdefinierte SA | roles/dataproc.serverlessEditor + roles/iam.serviceAccountUser bei benutzerdefinierten SA |
roles/dataproc.serverlessNode + Datenrollen |
Betrachter
Spark-Betrachter (Laufzeit 3.x)
Als Spark-Betrachter können Sie Batcharbeitslasten, interaktive Sitzungen, Ausführungsstatistiken, Logs und Status-Dashboards ansehen, ohne Arbeitslasten zu senden oder zu ändern.
Bitten Sie Ihren Administrator, Ihnen roles/dataproc.serverlessViewer zu gewähren.
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="user:VIEWER_EMAIL" \
--role="roles/dataproc.serverlessViewer"
Mit dieser Rolle erhalten Sie Lesezugriff zum Aufrufen von serverlosen Batch-Workloads, interaktiven Sitzungen und dem Vorgangsstatus.
Detaillierte Berechtigungen
Detaillierte Berechtigungen (Laufzeit 3.x)
In diesem Abschnitt werden die IAM-Berechtigungen aufgeführt, die in den IAM-Rollen enthalten sind, die mit der Laufzeit 3.x verknüpft sind.
Rolle „Serverless-Bearbeiter“ (roles/dataproc.serverlessEditor)
Diese Rolle mit ihren Berechtigungen bietet Lese- und Schreibzugriff auf serverlose Batch-Nutzlasten und interaktive Sitzungen der Laufzeitumgebung 3.x.
| Berechtigung | Beschreibung |
|---|---|
dataproc.batches.create |
Neue Batch-Arbeitslasten erstellen und einreichen |
dataproc.batches.get |
Status und Details von Batcharbeitslasten abrufen. |
dataproc.batches.list |
Alle Batch-Workloads in einem Projekt oder einer Region auflisten. |
dataproc.batches.delete |
Abgeschlossene oder beendete Batches löschen |
dataproc.batches.cancel |
Laufende Batcharbeitslast abbrechen |
dataproc.sessions.create |
Interaktive Spark Connect-Sitzungen erstellen |
dataproc.sessions.get |
Sitzungsstatus und ‑details abrufen |
dataproc.sessions.list |
Alle Sitzungen in einem Projekt oder einer Region auflisten. |
dataproc.sessions.delete |
Beendete Sitzungen löschen |
dataproc.sessions.terminate |
Eine laufende interaktive Sitzung beenden. |
dataproc.operations.get |
Rufen Sie den Status des asynchronen Vorgangs ab (erforderlich für die gcloud-Befehlszeile). |
Serverlose Knotenrolle (roles/dataproc.serverlessNode)
Bietet Berechtigungen für die Verwaltung von Knotenpools und die interne Spark-Kommunikation für benutzerdefinierte Dienstkonten für Laufzeit-Workloads 3.x.
Diese Rolle mit ihren Berechtigungen ist erforderlich, wenn Sie ein benutzerdefiniertes Dienstkonto für Arbeitslasten mit der Laufzeit 3.x verwenden. Arbeitslasten, die mit den Standardanmeldedaten für Endnutzer (End-User Credentials, EUC) 3.x ausgeführt werden, verwenden kein Arbeitslast-Dienstkonto.
| Berechtigung | Beschreibung |
|---|---|
dataproc.batches.sparkApplicationWrite |
Spark-Anwendungskommunikation für Batcharbeitslasten. |
dataproc.sessions.sparkApplicationWrite |
Spark-Anwendungskommunikation für interaktive Sitzungen. |
dataprocrm.nodePools.create |
Compute-Knotenpools erstellen |
dataprocrm.nodePools.delete |
Löschen Sie Compute-Knotenpools. |
dataprocrm.nodePools.resize |
Knotenpools dynamisch skalieren. |
dataprocrm.nodePools.get |
Status des Leseknotenpools lesen. |
dataprocrm.nodePools.list |
Knotenpools auflisten |
dataprocrm.nodePools.update |
Aktualisieren Sie die Konfiguration eines Knotenpools. |
dataprocrm.nodePools.deleteNodes |
Entfernen Sie bestimmte Knoten aus einem Pool. |
dataprocrm.nodes.list |
Knoten in einem Pool auflisten. |
dataprocrm.nodes.delete |
Knoten nach Abschluss der Aufgabe löschen. |
dataprocrm.nodes.get |
Knotenstatus lesen. |
dataprocrm.nodes.heartbeat |
Knotenstatus und Heartbeats melden. |
dataprocrm.nodes.mintOAuthToken |
OAuth-Tokens für Knotenoperationen erstellen. |
dataprocrm.operations.get |
Status des Infrastrukturbetriebs prüfen |
Rolle „Serverless Viewer“ (roles/dataproc.serverlessViewer)
Diese Rolle mit ihren Berechtigungen ist erforderlich, wenn Sie die Laufzeit 3.x mit einem benutzerdefinierten Dienstkonto für den Absender verwenden. Sie bieten Lesezugriff auf die Laufzeit von 3.x serverlosen Batch-Workloads, interaktiven Sitzungen und den Vorgangsstatus.
| Berechtigung | Beschreibung |
|---|---|
dataproc.batches.get |
Status und Details von Batcharbeitslasten abrufen |
dataproc.batches.list |
Batcharbeitslasten auflisten |
dataproc.sessions.get |
Sitzungsstatus und ‑details lesen |
dataproc.sessions.list |
Sitzungen auflisten. |
dataproc.operations.get |
Vorgangsstatus lesen. |
dataproc.operations.list |
Vorgänge auflisten. |
Rolle „Dienstkontodelegierung“ (roles/iam.serviceAccountUser)
Ermöglicht es einem Nutzer oder automatisierten System, Arbeitslasten als benutzerdefiniertes Dienstkonto anzuhängen und auszuführen. Die Arbeitslast wird mit den Berechtigungen und dem Ressourcenzugriff ausgeführt, die diesem Dienstkonto gewährt wurden, und nicht mit den Anmeldedaten des Endnutzers (End-User Credentials, EUC) des einreichenden Nutzers.
| Berechtigung | Beschreibung |
|---|---|
iam.serviceAccounts.actAs |
Ermöglicht dem Absender, Arbeitslasten als das angegebene Dienstkonto auszuführen. |
Laufzeit 2.x
Standardmäßig werden 2.x-Laufzeit-Workloads als Compute Engine-Standarddienstkonto ausgeführt. Der Absender (der Nutzer oder das automatisierte System) fungiert als dieses Konto, wenn er Arbeitslasten oder Sitzungen ausführt.
Entwickler
Spark-Entwickler (Laufzeitversion 2.x)
Als Spark-Entwickler, der die Laufzeit 2.x verwendet, entwickeln, senden, überwachen und beheben Sie Fehler bei Spark-Arbeitslasten und greifen auf Daten zu. Da die Arbeitslast als Dienstkonto und nicht als Ihre Nutzeridentität ausgeführt wird, gewährt Ihnen ein Administrator die IAM-Rolle „Editor“ und die Rolle „Nutzer von Dienstkonten“, damit Sie Arbeitslasten als Dienstkonto der Arbeitslast ausführen können.
Fordern Sie die Rolle „Bearbeiter“ an. Bitten Sie Ihren Administrator, Ihnen die Berechtigung
roles/dataproc.editorfür das Projekt zu gewähren:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="user:DEVELOPER_EMAIL" \ --role="roles/dataproc.editor"Delegierungsberechtigung anfordern Bitten Sie Ihren Administrator, Ihnen
roles/iam.serviceAccountUserfür das Dienstkonto der Arbeitslast zu gewähren.Das Standarddienstkonto für Arbeitslasten ist das Compute Engine-Standarddienstkonto,
PROJECT_NUMBER-compute@developer.gserviceaccount.com:gcloud iam service-accounts add-iam-policy-binding \ PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --member="user:DEVELOPER_EMAIL" \ --role="roles/iam.serviceAccountUser"Zugriff auf den Staging-Bucket erhalten. Der
2.x-Absender der Laufzeit benötigt die Berechtigung zum Hochladen von Skripten und JARs und das Dienstkonto der Arbeitslast die Berechtigung zum Verwalten temporärer Dateien und Logs. Diese Berechtigungen sind in der Rolleroles/storage.objectAdminenthalten.# Grant submitter access to upload staged files gcloud projects add-iam-policy-binding PROJECT_ID \ --member="user:DEVELOPER_EMAIL" \ --role="roles/storage.objectAdmin" # Grant workload service account access for staging, temporary files, and logs gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \ --role="roles/storage.objectAdmin"Senden Sie eine Test-Batcharbeitslast. Reichen Sie eine Test-Batcharbeitslast ein, um die Einrichtung zu bestätigen.
gcloud dataproc batches submit spark \ --region=REGION \ --version=2.2 \ --class=org.apache.spark.examples.SparkPi \ --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \ -- 1000Hinweise:
Da Ihre Arbeitslast als Dienstkonto für die Arbeitslast ausgeführt wird, benötigt dieses Konto und nicht Ihr Nutzerkonto Zugriff auf die Daten, die von Ihrem Job gelesen und geschrieben werden (siehe Häufig verwendete Daten- und Dienstrollen).
Wenn Ihr Projekt kein
default-VPC-Netzwerk hat, verwenden Sie das Flag oder Feldsubnet, um Ihr regionales Subnetz anzugeben (siehe Konfiguration des serverlosen Netzwerks für Managed Service for Apache Spark).Ein End-to-End-Beispiel für das Ausführen von PySpark-Arbeitslasten und das Konfigurieren der erforderlichen Berechtigungen für Cloud Storage, BigLake und BigQuery finden Sie unter Daten transformieren und in eine Apache Iceberg-Tabelle schreiben.
Benutzerdefinierte Dienstkonten für benutzerdefinierte Arbeitslasten (Laufzeit 2.x)
Verwenden Sie ein benutzerdefiniertes Dienstkonto, wenn in Ihrer Organisation Arbeitslasten unter einer dedizierten, prüfbaren Identität anstelle des freigegebenen Compute Engine-Standarddienstkontos ausgeführt werden müssen (siehe IAM-Dienstkonto – Best Practices).
Berechtigung zum Ausführen von Arbeitslasten als benutzerdefiniertes Dienstkonto erhalten Bitten Sie Ihren Administrator, Ihnen
roles/iam.serviceAccountUserfür das benutzerdefinierte Dienstkonto zu gewähren:gcloud iam service-accounts add-iam-policy-binding \ WORKLOAD_SA_EMAIL \ --member="user:DEVELOPER_EMAIL" \ --role="roles/iam.serviceAccountUser"Geben Sie das benutzerdefinierte Dienstkonto beim Einreichen von Arbeitslasten mit dem Flag
--service-accountan.gcloud dataproc batches submit spark \ --region=REGION \ --service-account=WORKLOAD_SA_EMAIL \ --version=2.2 \ --class=org.apache.spark.examples.SparkPi \ --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \ -- 1000Dataset-Zugriff:Wenn Ihre Arbeitslast nicht auf Datasets zugreifen kann, weisen Sie dem benutzerdefinierten Dienstkonto der Arbeitslast (nicht Ihrem Nutzerkonto) die erforderlichen Rollen für den Datenzugriff zu (siehe Häufig verwendete Daten- und Servicerollen).
Administrator
Spark-Administrator (Laufzeit 2.x)
Als Spark-Administrator richten Sie das Projekt ein, konfigurieren Dienstkonten und gewähren Spark-Entwicklern Zugriff.
Arbeitslasten verwenden automatisch das benannte VPC-Subnetz default. Wenn in Ihrem Projekt kein default-Netzwerk vorhanden ist oder benutzerdefinierte VPCs verwendet werden, finden Sie unter Netzwerkkonfiguration für Managed Service for Apache Spark Serverless Informationen zum Einrichten und Angeben eines Subnetzes für Arbeitslasten und Sitzungen.
Standardlaufzeit 2.x aktivieren
Bei der Standardlaufzeit 2.x werden Arbeitslasten als Compute Engine-Standarddienstkonto ausgeführt.
Gewähren Sie dem Entwickler
roles/dataproc.editor.gcloud projects add-iam-policy-binding PROJECT_ID \ --member="user:DEVELOPER_EMAIL" \ --role="roles/dataproc.editor"Gewähren Sie
roles/iam.serviceAccountUserfür das Standarddienstkonto.gcloud iam service-accounts add-iam-policy-binding \ PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --member="user:DEVELOPER_EMAIL" \ --role="roles/iam.serviceAccountUser"Gewähren Sie dem Dienstkonto der Arbeitslast die Berechtigung
roles/dataproc.worker.Mit dieser Rolle kann das Dienstkonto den VM-Agent registrieren, Compute-Aufgaben leasen und ausführen sowie Logs und Messwerte an Cloud Logging und Cloud Monitoring senden:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \ --role="roles/dataproc.worker"Gewähren Sie
roles/storage.objectAdminfür den Staging-Bucket-Speicher.gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \ --role="roles/storage.objectAdmin"Gewähren Sie dem Dienstkonto der Arbeitslast Zugriff auf das Dataset.
Weisen Sie dem Dienstkonto für die Arbeitslast Rollen auf Datenebene zu, damit es auf Datasets für Spark-Anwendungen zugreifen kann (siehe Häufig verwendete Daten- und Dienstrollen).
Benutzerdefinierte Dienstkonten für Arbeitslasten aktivieren (Laufzeit 2.x)
Verwenden Sie ein benutzerdefiniertes Dienstkonto für Arbeitslasten mit der Laufzeit 2.x, um Arbeitslasten zu isolieren, anstatt das gemeinsame Compute Engine-Standarddienstkonto zu verwenden.
Gewähren Sie dem Entwickler die Berechtigung
roles/iam.serviceAccountUserfür das benutzerdefinierte Dienstkonto.gcloud iam service-accounts add-iam-policy-binding \ WORKLOAD_SA_EMAIL \ --member="user:DEVELOPER_EMAIL" \ --role="roles/iam.serviceAccountUser"Weisen Sie dem benutzerdefinierten Dienstkonto die Rolle
roles/dataproc.workerzu.gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:WORKLOAD_SA_EMAIL" \ --role="roles/dataproc.worker"Gewähren Sie Zugriff auf Anwendungsdaten und die Staging-Umgebung.
Weisen Sie dem benutzerdefinierten Dienstkonto für Arbeitslasten Rollen auf Datenebene direkt zu (siehe Häufig verwendete Daten- und Servicerollen) und gewähren Sie
roles/storage.objectAdminfür Staging- und temporäre Buckets.
Benutzerdefinierte Dienstkonten für Einreicher aktivieren (Laufzeit 2.x)
Verwenden Sie ein benutzerdefiniertes Dienstkonto für den Absender, wenn automatisierte Systeme (z. B. Managed Service for Apache Airflow, Cloud Scheduler oder CI/CD-Pipelines) Arbeitslasten ohne interaktiven menschlichen Nutzer senden.
Gewähren Sie dem Dienstkonto des Absenders
roles/dataproc.editor.gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SUBMITTER_SA_EMAIL" \ --role="roles/dataproc.editor"Gewähren Sie dem Dienstkonto der Arbeitslast die Berechtigung
roles/iam.serviceAccountUser.gcloud iam service-accounts add-iam-policy-binding \ WORKLOAD_SA_EMAIL \ --member="serviceAccount:SUBMITTER_SA_EMAIL" \ --role="roles/iam.serviceAccountUser"Konfigurieren Sie das Dienstkonto für die Arbeitslast.
roles/dataproc.worker- und Dataset-Zugriff fürWORKLOAD_SA_EMAILgewähren.
Spark-Administratorrollen (Laufzeit 2.x)
In der folgenden Tabelle sind die IAM-Rollen zusammengefasst, die mit der Laufzeit 2.x gewährt werden müssen.
| Meldende Partei | Workload Identity | Gewährung an Einreicher | Arbeitslast-Dienstkonto gewähren |
|---|---|---|---|
| Endnutzer (Standard) | Standardmäßiges Compute Engine-Dienstkonto | roles/dataproc.editor + roles/iam.serviceAccountUser im Standarddienstkonto |
roles/dataproc.worker + roles/storage.objectAdmin + Datenrollen |
| Endnutzer | Benutzerdefinierte SA | roles/dataproc.editor + roles/iam.serviceAccountUser bei benutzerdefinierten SA |
roles/dataproc.worker + roles/storage.objectAdmin + Datenrollen |
| Benutzerdefinierte SA (Automatisierung) | Benutzerdefinierte SA | roles/dataproc.editor + roles/iam.serviceAccountUser bei benutzerdefinierten SA |
roles/dataproc.worker + roles/storage.objectAdmin + Datenrollen |
Betrachter
Spark-Betrachter (Laufzeitversion 2.x)
Als Spark-Betrachter können Sie Batcharbeitslasten, interaktive Sitzungen, Ausführungsstatistiken, Logs und Status-Dashboards ansehen, ohne Arbeitslasten zu senden oder zu ändern.
Bitten Sie Ihren Administrator, Ihnen roles/dataproc.viewer zu gewähren:
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="user:VIEWER_EMAIL" \
--role="roles/dataproc.viewer"
Diese Rolle gewährt Lesezugriff auf alle Managed Service for Apache Spark-Ressourcen wie Cluster, Jobs, Batches, Sitzungen und Vorgänge.
Detaillierte Berechtigungen
Detaillierte Berechtigungen (Laufzeit 2.x)
In diesem Abschnitt werden die IAM-Berechtigungen aufgeführt, die in den IAM-Rollen enthalten sind, die mit der Laufzeit 2.x verknüpft sind.
Bearbeiterrolle roles/dataproc.editor
Diese Rolle bietet die Kontrolle über serverlose 2.x-Arbeitslasten und -Sitzungen sowie über Managed Service for Apache Spark-Cluster und -Jobs in Compute Engine.
| Berechtigung | Für serverlose Funktionen erforderlich | Beschreibung |
|---|---|---|
dataproc.batches.create |
Ja | Neue Batch-Arbeitslasten erstellen und einreichen |
dataproc.batches.get |
Ja | Status und Details von Batcharbeitslasten abrufen. |
dataproc.batches.list |
Ja | Alle Batch-Workloads in einem Projekt oder einer Region auflisten. |
dataproc.batches.delete |
Ja | Abgeschlossene oder beendete Batches löschen |
dataproc.batches.cancel |
Ja | Laufende Batcharbeitslast abbrechen |
dataproc.sessions.create |
Ja | Interaktive Sitzungen erstellen |
dataproc.sessions.get |
Ja | Sitzungsstatus und ‑details abrufen |
dataproc.sessions.list |
Ja | Alle Sitzungen in einem Projekt oder einer Region auflisten. |
dataproc.sessions.delete |
Ja | Beendete Sitzungen löschen |
dataproc.sessions.terminate |
Ja | Eine laufende interaktive Sitzung beenden. |
dataproc.operations.get |
Ja | Rufen Sie den Status des asynchronen Vorgangs ab (erforderlich für die gcloud-Befehlszeile). |
compute.networks.get |
Ja | VPC-Netzwerkkonfiguration ansehen |
compute.networks.list |
Ja | Verfügbare VPC-Netzwerke und ‑Subnetze auflisten. |
dataproc.clusters.* |
Nein (nur Cluster) | Compute Engine-basierte Managed Service for Apache Spark-Cluster erstellen, verwalten und verwenden. |
dataproc.jobs.* |
Nein (nur Cluster) | Jobs in Compute Engine-basierten Managed Service for Apache Spark-Clustern senden und verwalten. |
dataproc.autoscalingPolicies.* |
Nein (nur Cluster) | Autoscaling-Richtlinien für Compute Engine-basierte Cluster. |
dataproc.nodeGroups.* |
Nein (nur Cluster) | Benutzerdefinierte Knotengruppen in Compute Engine-basierten Clustern. |
dataproc.workflowTemplates.* |
Nein (nur Cluster) | Vorlagenworkflows für Compute Engine-basierte Cluster. |
compute.machineTypes.* |
Nein (nur Cluster) | Metadaten zum Maschinentyp für Compute Engine-basierte Cluster. |
Worker-Rolle (roles/dataproc.worker)
Diese Rolle bietet Berechtigungen zur Ausführung von Arbeitslasten für die Laufzeit 2.x.
| Berechtigung | Beschreibung |
|---|---|
dataproc.agents.create |
Registrieren Sie den VM-Agent auf der VM. |
dataproc.agents.get |
Agent-Status lesen. |
dataproc.agents.update |
Aktualisieren Sie den Status des KI-Agenten. |
dataproc.agents.delete |
Registrierung des Agenten nach Abschluss aufheben. |
dataproc.tasks.lease |
Computing-Aufgaben zur Ausführung leasen. |
dataproc.tasks.reportStatus |
Status der Aufgabenausführung melden. |
storage.objects.create |
Staging-Daten, temporäre Dateien und Logs schreiben. |
storage.objects.delete |
Temporäre Dateien bereinigen |
storage.objects.get |
Boot-Skripts und bereitgestellte Dateien lesen. |
storage.objects.list |
Inhalte von Staging- und temporären Buckets auflisten. |
Betrachterrolle (roles/dataproc.viewer)
Diese Rolle bietet Lesezugriff auf alle Managed Service for Apache Spark-Ressourcen.
| Berechtigung | Für serverlose Funktionen erforderlich | Beschreibung |
|---|---|---|
dataproc.batches.get |
Ja | Status und Details von Batcharbeitslasten abrufen |
dataproc.batches.list |
Ja | Alle Batch-Workloads in einem Projekt oder einer Region auflisten. |
dataproc.sessions.get |
Ja | Sitzungsstatus und ‑details lesen |
dataproc.sessions.list |
Ja | Alle Sitzungen in einem Projekt oder einer Region auflisten. |
dataproc.operations.get |
Ja | Status des asynchronen Vorgangs lesen. |
dataproc.operations.list |
Ja | Vorgänge in einem Projekt oder einer Region auflisten. |
dataproc.clusters.get |
Nein (nur Cluster) | Clusterkonfiguration und -status ansehen |
dataproc.clusters.list |
Nein (nur Cluster) | Cluster in einem Projekt oder einer Region auflisten. |
dataproc.jobs.get |
Nein (nur Cluster) | Jobdetails und ‑status in Clustern ansehen |
dataproc.jobs.list |
Nein (nur Cluster) | Jobs in Clustern auflisten |
dataproc.autoscalingPolicies.get |
Nein (nur Cluster) | Details zur Autoscaling-Richtlinie ansehen |
dataproc.autoscalingPolicies.list |
Nein (nur Cluster) | Autoscaling-Richtlinien auflisten |
dataproc.workflowTemplates.get |
Nein (nur Cluster) | Details zur Workflowvorlage ansehen |
dataproc.workflowTemplates.list |
Nein (nur Cluster) | Workflow-Vorlagen auflisten. |
Rolle „Dienstkontodelegierung“ (roles/iam.serviceAccountUser)
Ermöglicht es einem Nutzer oder automatisierten System, Arbeitslasten als Compute Engine-Standarddienstkonto oder als benutzerdefiniertes Dienstkonto anzuhängen und auszuführen. Die Arbeitslast wird mit den Berechtigungen und dem Ressourcenzugriff ausgeführt, die diesem Dienstkonto gewährt wurden.
| Berechtigung | Beschreibung |
|---|---|
iam.serviceAccounts.actAs |
Ermöglicht dem Absender, Arbeitslasten als das angegebene Dienstkonto auszuführen. |
Nächste Schritte
- Daten transformieren und in eine Apache Iceberg-Tabelle schreiben enthält eine End-to-End-Anleitung mit PySpark und serverlosen Spark-Berechtigungen.
- Lebenszyklus einer serverlosen Batcharbeitslast von Managed Service for Apache Spark
- Informationen zur serverlosen Netzwerkkonfiguration für Managed Service for Apache Spark