Best Practices für Managed Service for Apache Spark für die Produktion

In diesem Dokument werden Best Practices für Managed Service for Apache Spark erläutert, mit denen Sie zuverlässige, effiziente und aufschlussreiche Datenverarbeitungsjobs in Managed Service for Apache Spark-Clustern in Produktionsumgebungen ausführen können.

Cluster-Bildversionen angeben

Managed Service for Apache Spark verwendet Image-Versionen, um das Betriebssystem, Big-Data-Komponenten und Google Cloud -Connectors in einem Paket zu bündeln, das auf einem Cluster bereitgestellt wird. Wenn Sie beim Erstellen eines Clusters keine Image-Version angeben, verwendet Managed Service for Apache Spark standardmäßig die neueste stabile Image-Version.

Verknüpfen Sie Ihren Cluster für Produktionsumgebungen mit einer bestimmten major.minor Managed Service for Apache Spark-Image-Version, wie im folgenden gcloud CLI-Befehl gezeigt.

gcloud dataproc clusters create CLUSTER_NAME \
    --region=region \
    --image-version=2.0

Dataproc löst die Version major.minor in die neueste Sub-Minor-Version auf (2.0 wird in 2.0.x aufgelöst). Hinweis: Wenn Sie für Ihren Cluster eine bestimmte Sub-Minor-Version benötigen, können Sie diese angeben, z. B. --image-version=2.0.x. Weitere Informationen finden Sie unter Funktionsweise der Versionsverwaltung.

Vorabversionen von Managed Service for Apache Spark-Images

Neue Nebenversionen von Managed Service for Apache Spark-Images sind in einer preview-Version verfügbar, bevor sie im Standard-Track für Nebenversionen veröffentlicht werden. Verwenden Sie ein Vorabversion-Image, um Ihre Jobs mit einer neuen Nebenversion des Images zu testen und zu validieren, bevor Sie die Standard-Nebenversion des Images in der Produktion verwenden. Weitere Informationen finden Sie unter Versionsverwaltung für Managed Service for Apache Spark.

Benutzerdefinierte Images bei Bedarf verwenden

Wenn Sie Abhängigkeiten haben, die dem Cluster hinzugefügt werden müssen, z. B. native Python-Bibliotheken oder Software zur Sicherheitshärtung oder zum Virenschutz, erstellen Sie ein benutzerdefiniertes Image aus dem neuesten Image in Ihrem Ziel-Image-Versions-Track. So können Sie die Abhängigkeitsanforderungen erfüllen, wenn Sie Cluster mit Ihrem benutzerdefinierten Image erstellen. Wenn Sie Ihr benutzerdefiniertes Image neu erstellen, um Abhängigkeitsanforderungen zu aktualisieren, verwenden Sie die neueste verfügbare Sub-Minor-Image-Version innerhalb des Minor-Image-Tracks.

Jobs an Managed Service for Apache Spark senden

Senden Sie Jobs mit einem jobs.submit-Aufruf über die gcloud CLI oder die Google Cloud Console an Managed Service for Apache Spark. Legen Sie Job- und Clusterberechtigungen fest, indem Sie Managed Service for Apache Spark-Rollen zuweisen. Verwenden Sie benutzerdefinierte Rollen, um den Clusterzugriff von den Berechtigungen zum Einreichen von Jobs zu trennen.

Vorteile des Einreichens von Jobs bei Managed Service for Apache Spark:

  • Keine komplizierten Netzwerkeinstellungen erforderlich – die API ist weithin erreichbar
  • Einfache Verwaltung von IAM-Berechtigungen und -Rollen
  • Jobstatus einfach verfolgen – keine Jobmetadaten von Managed Service for Apache Spark, die die Ergebnisse verkomplizieren.

Führen Sie in der Produktion Jobs, die nur von Abhängigkeiten auf Clusterebene abhängen, mit einer festen Nebenversion des Images aus (z. B. --image-version=2.0). Bündeln Sie Abhängigkeiten mit Jobs, wenn die Jobs gesendet werden. Eine gängige Methode hierfür ist das Senden einer Uber-JAR an Spark oder MapReduce.

  • Beispiel: Wenn ein Job-JAR von args4j und spark-sql abhängt, wobei args4j für den Job spezifisch ist und spark-sql eine Abhängigkeit auf Clusterebene ist, bündeln Sie args4j im Uber-JAR des Jobs.

Speicherorte für Initialisierungsaktionen steuern

Mit Initialisierungsaktionen können Sie automatisch Skripts ausführen oder Komponenten installieren, wenn Sie einen Managed Service for Apache Spark-Cluster erstellen. Gängige Managed Service for Apache Spark-Initialisierungsaktionen finden Sie im GitHub-Repository dataproc-initialization-actions. Wenn Sie Clusterinitialisierungsaktionen in einer Produktionsumgebung verwenden, kopieren Sie Initialisierungsskripts in Cloud Storage, anstatt sie aus einem öffentlichen Repository zu beziehen. Dadurch wird vermieden, dass Initialisierungsskripts ausgeführt werden, die von anderen geändert werden können.

Versionshinweise zu Managed Service for Apache Spark im Blick behalten

Für Managed Service for Apache Spark werden regelmäßig neue Sub-Minor-Image-Versionen veröffentlicht. In den Versionshinweisen zu Managed Service for Apache Spark finden Sie Informationen zu den neuesten Image-Versionen von Managed Service for Apache Spark sowie zu anderen Ankündigungen, Änderungen und Fehlerbehebungen. Sie können die Versionshinweise auch abonnieren.

Staging-Bucket ansehen, um Fehler zu untersuchen

  1. Sehen Sie sich den Staging-Bucket Ihres Clusters an, um Cluster- und Jobfehlermeldungen zu untersuchen. In der Regel wird der Cloud Storage-Speicherort des Staging-Buckets in Fehlermeldungen angezeigt, wie im folgenden Beispiel im Fettdruck zu sehen ist:

    ERROR:
    (gcloud.dataproc.clusters.create) Operation ... failed:
    ...
    - Initialization action failed. Failed action ... see output in:
    gs://dataproc-<BUCKETID>-us-central1/google-cloud-dataproc-metainfo/CLUSTERID/<CLUSTER_ID>\dataproc-initialization-script-0_output
     

  2. Verwenden Sie die gcloud CLI, um den Inhalt des Staging-Buckets aufzurufen:

    gcloud storage cat gs://STAGING_BUCKET
    
    Beispielausgabe:
    + readonly RANGER_VERSION=1.2.0
    ... Ranger admin password not set. Please use metadata flag - default-password
    

Support anfordern

Google Cloud unterstützt Ihre OSS-Produktionsarbeitslasten und hilft Ihnen, Ihre geschäftlichen SLAs über Supportstufen zu erfüllen. Außerdem können die Beratungsdienste von Google CloudBest Practices für die Produktionsbereitstellungen Ihres Teams bereitstellen.

Weitere Informationen