Bonnes pratiques de Managed Service pour Apache Spark en production

Ce document présente les bonnes pratiques de Managed Service pour Apache Spark qui peuvent vous aider à exécuter des jobs de traitement de données fiables, efficaces et pertinents sur des clusters Managed Service pour Apache Spark dans des environnements de production.

Spécifier les versions d'image de cluster

Managed Service pour Apache Spark utilise des versions d'image pour regrouper le système d'exploitation, les composants big data et les connecteurs Google Cloud dans un package déployé sur un cluster. Si vous ne spécifiez pas de version d'image lors de la création d'un cluster, Managed Service pour Apache Spark utilise par défaut la version d'image stable la plus récente.

Pour les environnements de production, associez votre cluster à une version d'image major.minor Managed Service pour Apache Spark spécifique, comme indiqué dans la commande gcloud CLI suivante.

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

Dataproc résout la version major.minor vers la dernière version mineure (2.0 est résolu en 2.0.x). Remarque : Si vous devez utiliser une version mineure spécifique pour votre cluster, vous pouvez la spécifier (par exemple, --image-version=2.0.x). Pour en savoir plus, consultez Fonctionnement de la gestion des versions.

Versions d'image en preview de Managed Service pour Apache Spark

De nouvelles versions mineures des images Managed Service pour Apache Spark sont disponibles dans une version preview avant d'être publiées dans la version d'image mineure standard. Utilisez une image d'aperçu pour tester et valider vos jobs avec une nouvelle version mineure d'image avant d'adopter la version mineure d'image standard en production. Pour en savoir plus, consultez Gestion des versions de Managed Service pour Apache Spark.

Utiliser des images personnalisées si nécessaire

Si vous devez ajouter des dépendances au cluster, telles que des bibliothèques Python natives, ou des logiciels de renforcement de la sécurité ou de protection contre les virus, créez une image personnalisée à partir de la dernière image de votre version d'image mineure cible. Cette pratique vous permet de répondre aux exigences de dépendance lorsque vous créez des clusters à l'aide de votre image personnalisée. Lorsque vous recompilez votre image personnalisée pour mettre à jour les exigences de dépendance, utilisez la dernière version d'image sous-mineure disponible dans la version d'image mineure.

Envoyer des jobs à Managed Service pour Apache Spark

Envoyez des jobs à Managed Service pour Apache Spark avec un appel jobs.submit à l'aide de la gcloud CLI ou de la console Google Cloud . Définissez les autorisations de job et de cluster en attribuant des rôles Managed Service pour Apache Spark. Utilisez des rôles personnalisés pour séparer l'accès au cluster des autorisations d'envoi de jobs.

Avantages de l'envoi de jobs à Managed Service pour Apache Spark :

  • Aucun paramètre réseau complexe n'est requis : l'API est largement accessible.
  • Gestion simplifiée des autorisations et des rôles IAM
  • Suivez facilement l'état des jobs : aucune métadonnée de job Managed Service pour Apache Spark ne vient compliquer les résultats.

En production, exécutez des jobs qui ne dépendent que des dépendances au niveau du cluster sur une version d'image mineure fixe (par exemple, --image-version=2.0). Regroupez les dépendances avec les jobs lorsqu'ils sont envoyés. Pour ce faire, il est courant d'envoyer un uber jar à Spark ou MapReduce.

  • Exemple : Si un fichier JAR de job dépend de args4j et de spark-sql, avec args4j spécifique au job et spark-sql une dépendance au niveau du cluster, regroupez args4j dans le fichier uber JAR du job.

Contrôler les emplacements des actions d'initialisation

Les actions d'initialisation vous permettent d'exécuter automatiquement des scripts ou d'installer des composants lorsque vous créez un cluster Managed Service pour Apache Spark (consultez le dépôt GitHub dataproc-initialization-actions pour connaître les actions d'initialisation courantes de Managed Service pour Apache Spark). Lorsque vous utilisez des actions d'initialisation de cluster dans un environnement de production, copiez les scripts d'initialisation dans Cloud Storage plutôt que de les sourcer à partir d'un dépôt public. Cette pratique évite d'exécuter des scripts d'initialisation susceptibles d'être modifiés par d'autres utilisateurs.

Surveiller les notes de version de Managed Service pour Apache Spark

Managed Service pour Apache Spark publie régulièrement de nouvelles versions d'image mineures. Consultez les notes de version de Managed Service pour Apache Spark ou abonnez-vous pour être informé des dernières versions d'images Managed Service pour Apache Spark, ainsi que d'autres annonces, modifications et correctifs.

Afficher le bucket de préproduction pour examiner les échecs

  1. Examinez le bucket de préproduction de votre cluster pour analyser les messages d'erreur du cluster et des jobs. En règle générale, l'emplacement Cloud Storage du bucket de préproduction est indiqué dans les messages d'erreur, comme indiqué en texte en gras dans l'exemple de message d'erreur suivant :

    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. Utilisez la gcloud CLI pour afficher le contenu du bucket de préproduction :

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

Obtenir de l'aide

Google Cloud gère vos charges de travail OSS de production et vous aide à respecter vos SLA d'entreprise grâce à des niveaux d'assistance. De plus, les services de conseil Google Cloudpeuvent vous fournir des conseils sur les bonnes pratiques à adopter pour les déploiements en production de votre équipe.

Pour en savoir plus