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 les clusters Managed Service pour Apache Spark dans les 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 lorsque vous créez 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 en la dernière version de correction (2.0 est résolu en 2.0.x). Remarque : Si vous devez vous appuyer sur une version de correction spécifique pour votre cluster, vous pouvez la spécifier (par exemple, --image-version=2.0.x). Pour en savoir plus, consultez Fonctionnement du versionnement.

Versions des images d'aperçu de Managed Service pour Apache Spark

De nouvelles versions mineures des images Managed Service pour Apache Spark sont disponibles dans une version preview avant leur publication dans le canal standard des versions mineures des images. Utilisez une image d'aperçu pour tester et valider vos jobs par rapport à une nouvelle version mineure de l'image avant d'adopter la version mineure standard de l'image 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 antivirus, créez une image personnalisée à partir de la dernière image de votre version 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 recréez votre image personnalisée pour mettre à jour les exigences de dépendance, utilisez la dernière version d'image mineure disponible dans la branche 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 pour les jobs et les clusters 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.
  • Gérez facilement les autorisations et les rôles IAM
  • Suivez facilement l'état des jobs, sans métadonnées de job Managed Service pour Apache Spark pour compliquer les résultats.

En production, exécutez les jobs qui ne dépendent que des dépendances au niveau du cluster avec une version mineure fixe de l'image (par exemple, --image-version=2.0). Regroupez les dépendances avec les jobs lorsque vous les envoyez. 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 spark-sql, avec args4j spécifique au job et spark-sql une dépendance au niveau du cluster, regroupez args4j dans le fichier JAR uber 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 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 au lieu de les récupérer à 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.

Consulter les notes de version de Managed Service pour Apache Spark

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

Afficher le bucket intermédiaire pour examiner les échecs

  1. Consultez le bucket de préproduction de votre cluster pour examiner les messages d'erreur liés au cluster et aux tâches. En règle générale, l'emplacement Cloud Storage du bucket de préproduction est indiqué dans les messages d'erreur, comme le 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 intermédiaire :

    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 prend en charge vos charges de travail de production OSS et vous aide à respecter vos SLA d'entreprise grâce à des niveaux d'assistance. De plus,les Google Cloud services de conseil peuvent vous fournir des conseils sur les bonnes pratiques à suivre pour les déploiements en production de votre équipe.

Pour en savoir plus