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 behandelt, mit denen Sie zuverlässige, effiziente und aufschlussreiche Datenverarbeitungsjobs in Managed Service for Apache Spark-Clustern in Produktionsumgebungen ausführen können.

Cluster-Image-Versionen 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 für Produktionsumgebungen Ihren Cluster mit einer bestimmten major.minor-Image-Version von Managed Service for Apache Spark, wie im folgenden gcloud CLI-Befehl gezeigt.

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

Dataproc löst die major.minor-Version 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 sie angeben, z. B. --image-version=2.0.x. Weitere Informationen finden Sie unter Funktionsweise der Versionierung für mehr Informationen.

Managed Service for Apache Spark-Image-Versionen in der Vorschau

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

Benutzerdefinierte Images verwenden, wenn erforderlich

Wenn Sie dem Cluster Abhängigkeiten hinzufügen 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-Nebenversions-Image-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 die Abhängigkeitsanforderungen zu aktualisieren, verwenden Sie die neueste verfügbare Sub-Minor-Image-Version im Nebenversions-Image-Track.

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 gewähren. Verwenden Sie benutzerdefinierte Rollen, um den Clusterzugriff von den Berechtigungen zum Senden von Jobs zu trennen.

Vorteile des Sendens von Jobs an Managed Service for Apache Spark:

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

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

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

Standorte von Initialisierungsaktionen steuern

Initialisierungsaktionen ermöglichen Ihnen, Skripts automatisch auszuführen oder Komponenten zu installieren, wenn Sie einen Managed Service for Apache Spark-Cluster erstellen. Im dataproc-initialization-actions GitHub-Repository finden Sie gängige Initialisierungsaktionen für Managed Service for Apache Spark. Wenn Sie Cluster-Initialisierungsaktionen in einer Produktionsumgebung verwenden, kopieren Sie Initialisierungsskripts in Cloud Storage, anstatt sie aus einem öffentlichen Repository zu beziehen. So vermeiden Sie, dass Initialisierungsskripts ausgeführt werden, die von anderen geändert werden können.

Versionshinweise zu Managed Service for Apache Spark im Blick behalten

Managed Service for Apache Spark veröffentlicht regelmäßig neue Sub-Minor-Image-Versionen. In den Versionshinweisen zu Managed Service for Apache Spark finden Sie die neuesten Managed Service for Apache Spark-Image-Versionen und andere Ankündigungen, Änderungen und Korrekturen.

Staging-Bucket zur Untersuchung von Fehlern ansehen

  1. Sehen Sie sich den Staging-Bucket Ihres Clusters an, um Cluster- und Job-Fehlermeldungen zu untersuchen. Normalerweise wird der Cloud Storage-Speicherort des Staging-Buckets in Fehlermeldungen angezeigt, wie im fett gedruckten Text in der folgenden Beispielfehlermeldung:

    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 anzusehen:

    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 SLAs zu erfüllen, indem verschiedene Supportstufen angeboten werden. Außerdem können Sie sich von den Google Cloud Consulting Services zu Best Practices für die Produktionsbereitstellungen Ihres Teams beraten lassen.

Weitere Informationen