Bonnes pratiques Dataproc pour la production

Ce document présente les bonnes pratiques Dataproc qui peuvent vous aider exécuter des tâches de traitement de données fiables, efficaces et pertinentes Clusters Dataproc dans les environnements de production.

Spécifier les versions de l'image du cluster

Dataproc 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, Dataproc utilise par défaut la version stable la plus récente de l'image.

Pour les environnements de production, associez votre cluster à une version d'image Dataproc major.minor 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 version de correction la plus récente (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 la section Fonctionnement de la gestion des versions.

Versions de l'image d'aperçu Dataproc

Les nouvelles versions mineures des images Dataproc sont disponibles dans une version preview avant d'être publiées dans la version standard des images mineures. Utilisez une image d'aperçu pour tester et valider vos tâches avec une nouvelle version d'image mineure avant d'adopter la version d'image mineure standard en production. Pour en savoir plus, consultez la section Gestion des versions Dataproc.

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 canal de 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 recréez votre image personnalisée pour les exigences de mise à jour des dépendances, utilisez la dernière version de l'image de correction disponible dans la piste de l'image mineure.

Envoyer des jobs au service Dataproc

Envoyez des tâches au service Dataproc avec un appel jobs.submit à l'aide de la CLI gcloud ou de la console Google Cloud. Définissez des autorisations pour le job et le cluster en accordant Rôles Dataproc. Utilisez des rôles personnalisés pour séparer l'accès au cluster des autorisations d'envoi de tâches.

Avantages de l'envoi de tâches au service Dataproc :

  • Aucun paramètre réseau complexe n'est requis : l'API est largement accessible
  • Autorisations et rôles IAM faciles à gérer
  • Suivez facilement l'état des jobs : aucune métadonnée de job Dataproc pour compliquer les résultats.

En production, exécutez des tâches qui ne dépendent que de dépendances au niveau du cluster à une version d'image mineure fixe (par exemple, --image-version=2.0). Regroupez les dépendances avec les tâches lorsqu'elles sont envoyées. 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 (dépendance au niveau du cluster), regroupez args4j dans l'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 Dataproc (consultez le dépôt GitHub dataproc-initialization-actions pour connaître les actions d'initialisation Dataproc courantes). 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 extraire d'un dépôt public. Cette pratique évite d'exécuter qui sont susceptibles d'être modifiés par d'autres utilisateurs.

Surveiller les notes de version de Dataproc

Dataproc publie régulièrement de nouvelles versions d'images de correction. Consultez les notes de version Dataproc ou abonnez-vous pour connaître les dernières versions d'images Dataproc, ainsi que les 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 examiner les messages d'erreur du cluster et de la tâche. En règle générale, l'emplacement Cloud Storage du bucket de préproduction s'affiche dans les messages d'erreur, comme indiqué dans le texte en gras de 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 prend en charge vos charges de travail OSS de production et vous aide à respecter vos contrats de niveau de service professionnels à travers plusieurs niveaux d'assistance. Par ailleurs, Google Cloud Les services de conseil peuvent vous conseiller sur les bonnes pratiques pour les déploiements de production de votre équipe.

Pour en savoir plus