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 sur des clusters Dataproc dans des environnements de production.

Spécifier les versions d'image de 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 lors de la création d'un cluster, Dataproc 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 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 vers la dernière version de correction (2.0 est résolu en 2.0.x). Remarque : si vous devez utiliser 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 de la gestion des versions.

Versions d'images d'aperçu Dataproc

De nouvelles versions mineures des images Dataproc sont disponibles dans une version preview avant d'être publiées dans le canal des versions d'images mineures standards. Utilisez une image d'aperçu pour tester et valider vos tâches par rapport à une nouvelle version d'image mineure avant d'adopter la version d'image mineure standard en production. Pour en savoir plus, consultez la page Gestion des versions de Dataproc.

Utilisez des images personnalisées si nécessaire

Si vous avez des dépendances à ajouter au cluster, telles que des bibliothèques Python natives, ou un logiciel de renforcement de la sécurité ou de protection antivirus, créez une image personnalisée à partir de l'image la plus récente dans 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 recompilez votre image personnalisée pour mettre à jour les exigences de dépendance, utilisez la dernière version de correction disponible dans la piste d'image mineure.

Envoyer des tâches au service Dataproc

Envoyez des tâches au service Dataproc avec un appel jobs.submit à l'aide de gcloud CLI ou de la console Google Cloud. Définissez les autorisations des tâches et des clusters en attribuant des 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 de mise en réseau compliqué n'est requis : l'API est accessible à un large public.
  • Autorisations et rôles IAM faciles à gérer
  • Suivez facilement l'état des jobs, sans métadonnées 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 sur une version d'image mineure corrigée, (par exemple, --image-version=2.0). Regroupez les dépendances avec les tâches lors de leur envoi. Pour ce faire, il est courant d'envoyer un uber jar à Spark ou MapReduce.

  • Exemple: Si un fichier JAR de tâche dépend de args4j et de spark-sql, avec args4j spécifique à la tâche et spark-sql une dépendance au niveau du cluster, regroupez args4j dans le fichier Uber JAR de la tâche.

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 au lieu de les récupérer dans un dépôt public. Cette pratique évite d'exécuter des scripts d'initialisation susceptibles d'être modifiés par des tiers.

Surveiller les notes de version de Dataproc

Dataproc publie régulièrement de nouvelles versions de correction des images. Consultez les notes de version de Dataproc ou abonnez-vous à celles-ci pour être informé des dernières versions des images Dataproc et des autres annonces, modifications et correctifs.

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

  1. Accédez au 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 affiché dans les messages d'erreur, comme indiqué 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 gsutil pour afficher le contenu du bucket de préproduction:

    gsutil 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 les charges de travail de production OSS et vous aide à respecter les contrats de niveau de service de votre entreprise grâce à des niveaux d'assistance. Les services de conseil Google Cloud peuvent également fournir des conseils sur les bonnes pratiques à suivre pour les déploiements de production de votre équipe.

Pour en savoir plus